2011-02-03 6 views
3

ロール/ユーザー/アクセス許可のセキュリティモデルが必要な複数のプロジェクト(ASP.NET MVC)があります。このデータをデータベースのテーブルに保存します。 ASP.NET MVCプロジェクトでこのセキュリティモデルを実装することをお勧めしますか?データベース内のデータモデルとの対話によってユーザーが承認されているかどうかを判断するカスタムの自動化属性を使用しますか?ASP.NET MVCセキュリティモデル/データベース - 私のオプションは何ですか?

サードパーティ/オープンソースのオプションはありますか?

+0

組み込みのメンバーシップ/認可プロバイダに問題がありますか?法案に適合しない場合は、独自に実装することができます。http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx – mxmissile

+0

組み込みプロバイダはアクセス許可を処理しますか?例えば、ユーザは、役割「Guest」のメンバーであり、アクセス権「Read」および「Write」を有することができる。組み込みプロバイダは、特定のフォルダ、コントローラ、メソッドにアクセスするためにロールを使用するとうまくいくように見えますが、特定のアクセス許可があるかどうかを確認するものは表示されません。自分のロールにその権限があるかどうかを自動的に判断する "If If UserHasPermission(" Delete ")"と書くことができます。管理ツールを使って権限を追加する方法もわかりません。 – Jeff

答えて

0

私は複雑なMVCサイトにRhino Securityを使用しています。

http://ayende.com/Blog/archive/2008/01/22/Rhino-Security-Overview-Part-I.aspx

セキュリティ呼び出しはこのように見える終わる:

 permissionBuilderService 
       .Allow("/[Controller]", 1) 
       .For("GAAdmins", 1) 
       .OnEverything() 
       .DefaultLevel() 
       .Save(); 

authorizationRepository.AssociateUserWith(user, "GAAdmins"); 


if (authService.IsAllowed(user, "/[Controller]/[Action]")) 
...; 
1

私はこれに接近方法は、コントローラのアクションに反映することで、私はまだ、通常のasp.netメンバシッププロバイダを使用しますが、その後、持っていますすべての私のコントローラ/アクションを格納するアクションテーブル。

2番目にベースコントローラーを作成し、ベースコントローラーにauthorize属性を追加した後、認可「イベント」をオーバーライドし、ユーザーがその特定のアクションにアクセスできるかどうかをチェックしました。同じアクションを実行しました。

+0

私はこれがちょっと遅いと知っていますが、あなたはあなたの要点を詳述できると思いますか?私はあなたがちょうど言ったことに非常に近いと思う何かを探しています。 – kooldave98

関連する問題