自定义角色授权(无会员资格)

时间:2012-11-05 06:28:33

标签: c# asp.net-mvc-4 authorization

我对MVC很新,并使用ASP.NET MVC 4开发应用程序。对于身份验证,我在域中使用Windows身份验证和Active Directory。下一步是授权用户(不使用成员资格)。经过几篇文章仍然找到一个好方法。

我有自己的3个数据库表(UsersRolesUserRoles),以维护具有多个管理级别的授权用户。这是很多很多。例如,可能存在“admin”(对具有创建权限的系统的完全访问权限),“数据操作员”(仅针对部分的更新权限)和“支持用户”(只读/仅查看访问)。由于这是多对多的 - 用户可能是“支持用户”以及“数据输入操作员”。

对于特定部分,我需要根据方法控制访问。例如,假设有一个名为“InvoiceController”的控制器。可能有如下方法。

CreateNewInvoice() // Accessible only by admin

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

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

(只有角色表中存在的用户才能访问系统。其他人访问被拒绝。)

请告诉我如何根据存储在数据库中的角色在方法级别使用身份验证。

1 个答案:

答案 0 :(得分:2)

您可以通过两种方式实现:

创建一个自定义AuthorizeAttribute,您可以在其中加载并检查角色。

但更好的解决方案是创建自定义IPrincipal/IIdentity并在Application_OnPostAuthenticateRequest中分配。通过这样做,您可以充分利用内置授权模型,而无需进一步自定义。

请在此处查看我的回答:https://stackoverflow.com/a/10949178/70386