2012-11-05 193 views
3

我很新的MVC和開發與ASP.NET MVC 4應用程序。對於身份驗證我使用Windows身份驗證與域中的Active Directory。下一步是授權用戶(不使用成員資格)。通過幾篇文章,仍然找到一個好方法。基於自定義角色的授權(沒有成員資格)

我有我自己的3個數據庫表(Users,Roles,UserRoles)來維護具有多個管理員級別的授權用戶。這是很多很多。例如,可能存在「管理員」(完全訪問具有創建權限的系統),「數據操作員」(僅限某部分的更新權限)和「支持用戶」(只讀/僅查看訪問權限)。由於這是多對多的 - 用戶可能是「支持用戶」以及「數據輸入運營商」。

對於特定的部分,我需要根據方法來控制訪問。例如,假設有一個名爲「InvoiceController」的控制器。可能有以下方法。

CreateNewInvoice() // Accessible only by admin 

UpdateInvoice(...) // Accessible for admin and data operator 

ViewInvoice(...) // Accessible for admin, data operator and support user 

(只有用戶角色存在表可以訪問系統。訪問被拒絕的人。)

請讓我知道我可以使用驗證的方法級別基於存儲在數據庫中的角色。

回答

2

你可以做到這一點有兩種方式:

既可以在其中加載和檢查角色的自定義AuthorizeAttribute

但更好的解決方案是創建一個自定義IPrincipal/IIdentity並將其分配在Application_OnPostAuthenticateRequest。通過這樣做,您可以充分利用內置授權模型,而無需進一步自定義。

見我的答案在這裏:https://stackoverflow.com/a/10949178/70386

+0

感謝jgauffin ...定製AuthorizeAttribute方式工作。你有任何想法如何重定向到錯誤頁面可以包含在這? – chatura

+0

在過濾器中返回一個'RedirectResult' – jgauffin