私は現在、このような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によって提案されたものはより良いがより複雑な解決策のように見えます)。