C# 自定义基于角色的授权(无成员资格)

C# 自定义基于角色的授权(无成员资格),c#,asp.net-mvc-4,authorization,C#,Asp.net Mvc 4,Authorization,我对MVC非常陌生,并使用ASP.NETMVC4开发应用程序。对于身份验证,我在域中对Active Directory使用Windows身份验证。下一步是授权用户(不使用成员资格)。浏览了几篇文章,仍然在寻找一个好的方法 我有自己的3个数据库表(用户,角色,用户角色),用于维护具有多个管理级别的授权用户。它是多对多的。例如,可能有“管理员”(具有创建权限的对系统的完全访问)、“数据操作员”(仅对某个部分具有更新权限)和“支持用户”(只读/只读访问)。由于这是多对多-用户可能是“支持用户”以及“数

我对MVC非常陌生,并使用ASP.NETMVC4开发应用程序。对于身份验证,我在域中对Active Directory使用Windows身份验证。下一步是授权用户(不使用成员资格)。浏览了几篇文章,仍然在寻找一个好的方法

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

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

CreateNewInvoice() // Accessible only by admin

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

ViewInvoice(...) // Accessible for admin, data operator and support user
(只有角色表中存在的用户才能访问系统。其他用户的访问被拒绝。)


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

您可以通过两种方式完成:

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

但是更好的解决方案是创建一个自定义的
i原则/i身份
,并在
应用程序\u OnPostAuthenticateRequest
中分配它。通过这样做,您可以充分利用内置授权模型,而无需进一步定制


请看我的答案:

谢谢jgauffin。。。自定义属性方法有效。您知道如何将重定向到错误页面包括在其中吗?在筛选器中返回一个
重定向结果