【问题标题】:Custom role based authorization (without membership)基于自定义角色的授权(无成员身份)
【发布时间】:2012-10-24 23:42:49
【问题描述】:

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

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

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

CreateNewInvoice() // Accessible only by admin

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢 jgauffin... 自定义 AuthorizeAttribute 方法有效。你知道如何重定向到错误页面吗?
    • 在过滤器中返回一个RedirectResult
    猜你喜欢
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2019-05-27
    • 2012-04-10
    • 2014-10-22
    相关资源
    最近更新 更多