我有一个MVC应用程序使用Forms身份验证对Active Directory进行身份验证。由于我的MVC应用程序的规模已经很大,显而易见的是,我正在检查的角色越来越分散。我想更换喜欢的事物:沿东西线基于Active Directory角色的权限
[Authorize(Roles = "Staff")]
和Thread.CurrentPrincipal.IsInRole("Staff")
:
[AuthorizePermission(Permission.CanDoSomething)]
和Thead.CurrentPrincipal.HasPermission(Permission.CanDoSomething)
许可被枚举。现在,我在想,我可以定义每个AD角色有哪些权限在web.config中像这样:
<role name="Staff">
<permissions>
<add name="CreateEditDeleteSomething" />
<add name="PublishSomething" />
<add name="QueryUsers" />
</permissions>
</role>
然后我可以实现一个IPrincipal扩展方法 - HasPermission(Permission permission)
。这将查看用户是否记录到任何具有web.config中定义的权限的AD组。这将允许我更改特定AD组的权限,而无需更改代码或更新现有测试。自定义的授权属性然后可以调用HasPermission方法。
这种方法是否正确或是否有更好的方法来简化我在应用程序中的角色?我在网络上和网络上看到了很多例子,但它们似乎过于复杂。我可以通过在HasPermission中检查传递给Permission的web.config角色设置来实现吗? IPrincipal将有它的AD角色,所以确定它很容易确定允许的权限?
任何帮助表示赞赏!