2009-03-02 17 views
3

asp.netの動的データサイトでアクティブディレクトリの役割を使用してセキュリティを実装する最善の方法は何ですか?ダイナミックデータとActive Directoryを使用してロールベースのセキュリティを実装する方法は?

特定のビュー(および関連リンク)を特定のロールに制限したいと考えています。 すなわち、ユーザAのテーブルyのテーブルXとユーザBのためにできるだけのビューリストのアクションができる唯一のビューリストのアクション

答えて

0

あなただけ\アプリケーションにユーザーを承認&ロールプロバイダが認証するためにASP.NETのActive Directory Memebrshipを使用することができます。次に、Roles.IsUserInRoleに電話して、コンテンツをレンダリングする前に、ユーザーが関連グループの一部であることを確認するADロールのメンバーシップをチェックすることができます。

2

私はこれを多くのアプリケーションで行っています。

アプリケーションでWindows認証を有効にしてください。

ユーザーの資格情報を格納し、そのオブジェクトをセッションに保存してすばやく取得できるオブジェクトを作成します。それがなければすぐに再構築することができます。私は通常ビットに設定された各役割などがあります。そして、制御を確保する必要がいつでも


enum USER_ROLE : int 
{ 
    Role1 = 1, 
    Role2 = 2, 
    Role3 = 4, 
    Role4 = 8, 
    etc 
} 

if (Context.User.IsInRole("Roll1Name")) YourUserObject.Roles += USER_ROLE.Role1; 
if (Context.User.IsInRole("Roll2Name")) YourUserObject.Roles += USER_ROLE.Role2; 
etc 

を、私は、ユーザーの役割に基づいては、HTMLControlや財産をとる関数とのセキュリティ要件にそれを渡しますそのコントロール。

例:ブールSetControlSecurity(CTRLは、HTMLControl、int型iUserRoles、int型iControlRoles、ACTION eAction)

ので、パネルを行うための例は次のようになります。

SetControlSecurity(pnlUserInfo、YourUserObject.Roles、eRole.Role2、ACTION.Hide)。

私は通常、それが機能における役割を比較すると...非表示、読み取り専用、明確なデータなどのようなセキュリティの失敗に対して実行するアクションの種類にPARAMに

を取る持っているのは簡単です:


bool bHasAccess = ((iUserRole & iControlRoles) > 0); 
if (bHasAcess) 
{ 
    // leave the control or make sure it is visible etc 
} 
else 
{ 
    // take action to secure the control based on the action 
} 

希望に応じます。

関連する問題