我有一個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角色,所以確定它很容易確定允許的權限?
任何幫助表示讚賞!