3

私は現在、このような2つの役割を担っています。

[PrincipalPermission(SecurityAction.Demand、Role = "Domain \ Admin")] [PrincipalPermission(SecurityAction.Demand、Role = "Domain \ AnotherRole")]

問題は、この継承されたコードがドメインに固有であり、最終的にweb.configファイルからロールを取得したいので、ドメインにないVMで作業できることです。

私はこのような例を見ました:

PrincipalPermission permCheck = new PrincipalPermission(
                                     null, 
                                     @"Domain\Admin"); 
permCheck.Demand();

ユーザーがロールに属していない場合、これは例外をスローするため、この例を変更して2つのロールのいずれかを許可するにはどうすればよいですか?複数のIPrincipal.IsInRole()を使用してから独自の例外をスローすることもできますが、複数のロールで.Demandメソッドを使用する方法があるようです。

アップデート12/21:以下のLadislavの回答からのUnionリンクに基づくサンプルコード:

PrincipalPermission ppAdmin = new PrincipalPermission(null, @"Domain\Admin");
PrincipalPermission ppAnother = new PrincipalPermission(null, @"Domain\AnotherRole");
(ppAdmin.Union(ppAnother)).Demand();

しかし、AzMan(Ladislavによって提案されたものはより良いがより複雑な解決策のように見えます)。

4

1 に答える 1

2

PrincipalPermissionにはUnionメソッドがあります。このメソッドを使用すると、Demandを呼び出す前に複数のPrincipalPermissionsを組み合わせることができます。ただし、必須の権限を使用する代わりに、承認マネージャー(AzMan)および関連する役割プロバイダー(AuthorizationStoreRoleProvider)を確認できます。承認マネージャーを使用すると、アプリケーションで抽象ロールを定義し、MMCを介して実際のユーザーグループとロールを割り当てることができます。

于 2010-12-21T09:00:44.067 に答える