問題タブ [data-access]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
4201 参照

hibernate - Hibernateでデータベースレベルでユーザーアクセスを制限する方法

アプリ

さまざまなユーザーが使用するWebアプリを実装する必要があります。各ユーザーは、さまざまなテーブルに対して異なる特権を持っています。

  • ユーザーAは、テーブルから「名前」と「アドレス」のフィールドを確認できます。Student
  • ユーザーBは、フィールド「名前」と「電話番号」を表示できますが、テーブルの「住所」は表示できません。Student
  • ユーザーCは、上記のすべてのフィールドを表示および変更できます

  • 特定のアクセスを制限するために、UIレベルで何かを用意します。たとえば、エントリを変更する権限を持たないユーザーの[編集]ボタンを非表示にします。ただし、データのセキュリティを確保するためだけに、より低いレベル(おそらくデータベースレベルで?)に何かを用意する必要があると思います。


    問題

    アプリにHibernate、JBoss、DB2、Strutsを使用しています。ユーザー/パスワード/ロールを使用してデータベースに対してユーザーを認証する、ある種のJBoss LoginModuleを使用する必要があると思います(ただし、間違っている可能性があります(?))。私はいくつかの調査を行い、次のオプションを考え出しましたが、どれも私の場合に当てはまらないようです。これは、マルチユーザーWebアプリで非常に一般的なデータアクセスの問題だと思います。誰かが私を正しい方向に向けてくれませんか?前もって感謝します!

    1. hibernate.cfg.xmlJACCイベントリスナーで「grant」タグを使用します。これにより、すべての休止状態エンティティに「挿入」「更新」「読み取り」権限を設定できます。ただし、より細かい制御が必要な場合はどうなりますか?オブジェクト全体ではなく、特定のフィールドにアクセス許可を設定する必要があります。http://www.hibernate.org/hib_docs/v3/reference/en-US/html/objectstate-decl-security.html

    2. 各ejbのgetter/setterメソッドの権限を制限します。これを正しく理解していれば、すべてのユーザープロファイルに対してすべてのBeanを手動で構成する必要がありますが、これは私には非現実的です。 EJBメソッドのアクセス許可

    3. DAOをコーディングして、ユーザー権限を確認します。ログインしたユーザーがアクションを実行できるかどうかを判断するために、特定のDAOメソッドが呼び出されるたびに巨大なアクセス許可テーブルをチェックする独自のユーティリティ関数をロールします。

    4. Hibernateで「インターセプター」と「イベント」を使用します。各クラスに特定の「onLoad」、「onSaveorUpdate」などのイベントとインターセプターを定義します。この場合、個々のフィールドに権限レベルを指定できますか?http://www.hibernate.org/hib_docs/v3/reference/en-US/html/objectstate-events.html

    間違った木に吠えているのかもしれません。上記のすべては労働集約的であり、あまりインテリジェントではないようです。上記のオプションはいずれも、実行時にユーザー権限をプログラムで変更する方法を提供しません。これは、管理者レベルのユーザーがこのアプリで別のユーザーにより多くの制御を与えたい場合に役立ちます。


    ここでデータアクセス制御を行うための良い方法は何ですか?

    0 投票する
    16 に答える
    10234 参照

    orm - ORM とハンドコードされたデータ アクセス レイヤー

    宗教戦争が始まるかもしれないので、この質問をするのは少し怖いので、私が探しているものを明確にしたいと思います. 私は、あなたがどちらかの方法でジャンプしたい、またはジャンプした理由と、私のリストに追加するアイテムを探しています. ビッグチケット、ビッグバンのアイテムを探しています。また、製品に固有のアイテム (実際に関連性がある場合)。この時点で、製品 A と製品 B ではなく、ORM とマニュアルを評価しようとしています。

    ORM の利点

    ハンドコーディングの利点

    完全な開示のために、データベースに対して直接変更できないコードを「何か」が実行するという考えは本当に好きではありませんが、ORM の潜在的に膨大な開発時間の利点を見ることができます。

    私が.Netの世界にいることもおそらく注目に値します

    [編集] ( Using an ORM or plain SQL?の質問は、多くの質問に答え、パフォーマンスに関するポイントを補強しているようです)

    だから、私の質問を少し変えるために

    初期段階で ORM を使用してアプリを構築し、その後徐々にハンドコーディングされた DAL に置き換えた人はいますか? このアプローチの落とし穴は何でしたか?

    [さらに編集 - 今すぐ問題の核心に迫る] データベースに対して任意の SQL を実行できる Web サイトを持つことは恐ろしいことです。すべてのアクセスが sprocs を介して行われる場合、私のデータベースは適切で安全で快適な分離状態に置かれます。排他的に sprocs を使用すると、すべてではないにしても多くの SQL インジェクション攻撃ベクトルが除去されます。それについて何かコメントはありますか?

    0 投票する
    4 に答える
    709 参照

    database - データベースを交換しますか?

    多くの ORM ツールとカスタム データ アクセス レイヤー (DAO パターンなど) の目標は、最小限の作業でデータベース システム全体を交換できると思われるポイントまでデータベースを抽象化することです。

    一般的な DAL パターンに従うことは通常、コードでは良い考えですが、データベースを交換することは決して最小限の作業ではないようです。(コスト、トレーニング、データ移行など)

    大規模なシステムで 1 つのデータベースを別のデータベースに交換し、その影響をコードで処理した経験がある人はいますか? コードから実際のデータベースを抽象化することについて心配する価値はありますか?

    0 投票する
    3 に答える
    557 参照

    wpf - シンプルな WPF/Silverlight データ アクセス フレームワークを知っている人はいますか?

    SQL Serverコンパクトデータベースなどでいくつかのデータベーステーブルを定義し、フレームワークがウィンドウクラスなどを自動的に作成して、ユーザーがログインしてそのデータを編集できるようにする単純なWPFまたはSilverlightフレームワークを知っている人はいますか?

    複雑な MVVM パターンの例を探しているわけではありません。ハードコードすることができます。開発者は、ユーザーがデータを編集するために必要なすべての CRUD コードとフォームと承認を作成する時間を節約できます。開発者は、10 個のデータベース テーブルを定義し、コード生成を実行して、作成したい単純なデータベース アプリケーションをほぼ 80% 完成させることができました。

    これらはすべて一般的なコードになるため、このようなフレームワークが存在するか、誰かがすでにこのようなオープン ソース プロジェクトに取り組んでいると思います。

    このようなフレームワークやツールを知っている人はいますか?

    0 投票する
    4 に答える
    15493 参照

    c# - DbType.Time の Datareader 結果を Timespan オブジェクトに変換する方法は?

    DAAB 4.0 フレームワークで c# を使用して、datareader から dbtype.time の列タイプを持つ MS SQL 2008 データベースから結果を読み取っています。

    私の問題は、MSDN のドキュメントでは、dbtype.time は timespan にマップする必要があると書かれていますが、timespan のクローズ コンストラクターだけが long を受け入れ、datareader から返された結果を long にキャストしたり、timespan に直接キャストしたりできないことです。

    datareader.getTimeSpan() メソッドを示しているこの記事を見つけましたが、daab 4.0 の datareader にはこのメソッドがないようです。

    では、datareader からの結果を timespan オブジェクトに変換するにはどうすればよいでしょうか。

    0 投票する
    11 に答える
    2440 参照

    tdd - 偽のリポジトリではなくデータベースでテストを実行するのは悪い習慣ですか?

    私は利点が何であるかを知っており、より複雑なシステムで作業しているときに偽のデータを使用しています.

    単純なものを開発していて、実際のデータベースに環境を簡単にセットアップでき、アクセスされるデータが非常に小さいためアクセス時間が問題にならず、いくつかのテストしか実行していない場合はどうなるでしょうか。

    偽のデータを作成することはまだ重要ですか、それとも余分なコーディングを忘れて本物にスキップできますか?

    私が実際のデータベースと言ったとき、それは本番データベースを意味するのではなく、テストデータベースを意味しますが、実際のライブ DBMS と実際のデータベースと同じスキーマを使用しています。

    0 投票する
    3 に答える
    1234 参照

    xml - ヘルプ!Flash がサードパーティ ドメインから XML データを読み込めない

    以下を使用して、RSS フィードを使用して Yahoo からニュースを取得しています。

    はい、これは合法であり、SWF がオフラインのときは完全に機能しますが、セキュリティ エラーが表示されますが、Adobeセキュリティ パネルで D ドライブの「ドメイン」を許可します。

    しかし、サーバーにアップロードしてオンラインでテストするとすぐに:

    • Firefox3 では、データの読み込みに失敗し、ステータス バーに「finance.yahoo.com からデータを転送しています」というメッセージが表示されます。

    • InternetExplorer7 では、メッセージや警告なしでサイレントに失敗します。

    何が起こっていますか?* ワイルドカード (すべてのドメインを許可) を含むcrossdomain.xmlファイルを配置しました。

    0 投票する
    2 に答える
    239 参照

    web-services - SOA - ビジネス サービスへのデータ アクセスを個別の Web サービスとして提供するか、または提供しないか?

    現在、私の組織内では、パイロット SOA プロジェクトのいくつかの規則を考え出そうとしています。一見したところ、データ エンドポイントに直接アクセスせずに、サービスのユーザーにビジネス サービスの使用を強制するのが最善であると考えました..しかし、これが当てはまらない、または開発者にとって「有効」である可能性がある特定のシナリオはありますか?サービス外の特定のデータ エンドポイントにアクセスするには?

    これを公開すると、実際に再利用が損なわれるのではないかと常に恐れています。誰もが、利用可能な同じバックエンドデータを使用して同様のビジネスサービスを「再発明」し、「理論的には..より簡単に」書くだけになるからです。 「私のデータベースを使用するこの他のサービスは何をするのか?」と尋ねるのではなく、新しいビジネス サービスを提供します。

    サービスがデータベースへのほぼ直接的なパス スルーである場合でも、開発者の時間を節約し、最終的にはビジネス コストを節約するルールを適用することができるからです。

    考え?