我对MVC和使用WindowsMVC4开发应用程序非常陌生。为了进行身份验证,我在域中使用ASP.NET身份验证和Active Directory。下一步是授权用户(不使用成员资格)。浏览了几篇文章,仍然找到了一种好的方法。
我有自己的3个数据库表(Users,Roles,UserRoles)来维护几个管理员级别的授权用户。这是多对多。例如,可能有"admin“(具有create权限的系统的完全访问权限)、"data operator”(仅针对某个部分的更新权限)和"support user“(只读/只查看访问权限)。因为这是多对多-用户可以是“支持用户”也可以是“数据输入操作员”。
对于特定的部分,我需要基于方法来控制访问。例如,假设有一个名为"InvoiceController“的控制器。可能有如下方法。
CreateNewInvoice() // Accessible only by admin
UpdateInvoice(...) // Accessible for admin and data operator
ViewInvoice(...) // Accessible for admin, data operator and support user(只有存在于角色表中的用户才能访问系统。其他人的访问被拒绝。)
请让我知道如何根据存储在数据库中的角色在方法级别使用身份验证。
发布于 2012-11-05 14:41:27
您可以通过两种方式完成此操作:
创建在其中加载和检查角色的自定义AuthorizeAttribute。
但更好的解决方案是创建自定义IPrincipal/IIdentity并在Application_OnPostAuthenticateRequest中分配它。通过这样做,您可以充分利用内置的授权模型,而无需进行进一步的自定义。
https://stackoverflow.com/questions/13227012
复制相似问题