3

asp.net 動的データ サイトで Active Directory ロールを使用してセキュリティを実装する最善の方法は何ですか?

特定のビュー (および関連リンク) を特定のロールに制限したいと考えています。つまり、ユーザー A はテーブル x のリスト アクションのみを表示でき、ユーザー B はテーブル y のリスト アクションのみを表示できます。

4

3 に答える 3

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とプロパティを取得する関数にコントロールを渡します。

例えば。bool SetControlSecurity(HtmlControl ctrl、int iUserRoles、int iControlRoles、ACTION eAction)

したがって、パネルを作成する例は次のようになります。

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

私は通常、非表示、読み取り専用、データのクリアなど、セキュリティの失敗時に実行するアクションのタイプにパラメータを取り入れています...

関数内の役割の比較は簡単です。


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
}

お役に立てば幸いです。

于 2009-03-04T16:59:44.513 に答える
1

これに関する私のブログには、ユーザー ロールを使用したDynamicData Attribute Based Permission Solutionと、 DynamicData: Database Based Permissions - Part 1の記事が多数あります

于 2009-03-19T17:32:44.370 に答える
0

ASP.NET Active Directory Memebrship & Role プロバイダーを使用して、アプリケーションに対するユーザーの認証と承認を行うことができます。次に、コンテンツをレンダリングする前に、AD ロール メンバーシップを確認したい場所でRoles.IsUserInRoleを呼び出して、ユーザーが関連するグループの一部であることを確認できます。

于 2009-03-03T00:49:39.487 に答える