3

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

我有自己的 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

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

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

4

1 回答 1

2

你可以通过两种方式做到这一点:

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

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

在这里查看我的答案:https ://stackoverflow.com/a/10949178/70386

于 2012-11-05T06:41:26.860 回答