.NETでNHibernateを使用する場合の承認の処理方法
-
08-07-2019 - |
質問
リポジトリパターンを使用して、NHibernateを使用してデータベースを照会しています。次のようなことが非常に簡単になります。
public T GetById(int id){...}
しかし、誰かがクエリ文字列をいじり始めて、許可されていないものを見ると、あまり役に立ちません。
さらに、一部のオブジェクトは、認可が実行される親オブジェクトの深くネストされた子です。
たとえばブログ->著者->投稿->コメント。この不自然な例では、著者が自分の投稿とそれらの投稿に対するコメントを編集できるようにしますが、他の著者の投稿は表示または編集できません。投稿が著者のものであることを確認するのは簡単ですが、コメントが著者のものであることを確認するのはもう少し難しいです。さらに深くなるインスタンスがいくつかあります。
では...(モデルまたはリポジトリで)承認を行う方法は?
解決
Decoratorパターンを実装できます-IRepositoriesを注入するためにDP / IoCコンテナーを使用していると思いますか?
特定のユーザー/要求タイプに対して行われた呼び出しが有効であることを確認するISecureRepositoryを作成し、その呼び出しをIRepositoryに返します。これにより、メソッドを呼び出して戻り値の型を確認することもできます...
次に、IRepositoryにラップされたISecureRepositoryを使用するようにIoCをセットアップします...
とても簡単に聞こえます...
他のヒント
これは、ニーズに適した実装です。 http:// www .codeproject.com / KB / web-security / objectlevelsecurity.aspx 、これはACLベースのモデルです。