我目前有两个这样的角色:
[PrincipalPermission(SecurityAction.Demand, Role="Domain\Admin")] [PrincipalPermission(SecurityAction.Demand, Role="Domain\AnotherRole")]
问题是这个继承的代码是特定于域的,我想最终从 web.config 文件中获取角色,所以我可以在不在域中的 VM 上工作。
我见过这样的例子:
PrincipalPermission permCheck = new PrincipalPermission( null, @"Domain\Admin"); permCheck.Demand();
由于如果用户不在角色中这会引发异常,我如何更改此示例以允许两个角色中的任何一个?我可以使用多个 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 建议看起来是一个更好但更复杂的解决方案)。