我现在有两个角色:
PrincipalPermission(SecurityAction.Demand,Role="Domain\Admin")
问题是,继承的代码是特定于域的,我希望最终从web.config文件中获得角色,这样我就可以处理一个不在域中的VM了。
我见过这样的例子:
PrincipalPermission permCheck =新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建议的)看起来是一个更好但更复杂的解决方案。
发布于 2010-12-21 09:00:44
PrincipalPermission有友联市方法。此方法允许您在调用需求之前组合几个PrincipalPermissions。但是,您可以检查授权管理器 (AzMan)和相关角色提供程序(AuthorizationStoreRoleProvider),而不是使用命令式权限。授权管理器允许您在应用程序中定义抽象角色,并通过MMC分配真实的用户组和角色。
https://stackoverflow.com/questions/4495599
复制相似问题