【问题标题】:dynamically mapping roles to controllers in ASP.Net MVC在 ASP.Net MVC 中将角色动态映射到控制器
【发布时间】:2011-04-15 12:27:01
【问题描述】:

我目前在我的 MVC 应用程序中对过滤器中的授权角色进行硬编码,如下所示:

[Authorize(Roles = "Administrator,Manager")]

我希望最终能够将角色映射到每个控制器,以便站点管理员可以处理分配哪些角色可以执行每组操作。

string roles = DoSomethingToGetAllowableRoles(controllerName);

[Authorize(Roles = roles)]

我想象我需要有一个数据库表,它以某种方式保存每个控制器的列表,然后是另一个表,将控制器映射到角色。我想要一个页面,我可以在其中列出每个控制器,然后有一组复选框列出适用于该控制器的每个角色。

任何人有一个例子或可以引导我实现这一目标的方向吗?

【问题讨论】:

    标签: asp.net-mvc controller authorization roles


    【解决方案1】:

    您将需要编写自己的授权过滤器(可能通过扩展内置过滤器)。

    这样做的原因是你不能像那样动态分配属性参数。

    您不需要弄乱 MVC 源代码 - 您只需创建一个继承自 System.Web.Mvc.AuthrorizeAttribute 的类,覆盖 AuthorizeCore,然后使用您的属性代替默认值:

    public class CustomAuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            // Put your custom logic here, returning true for success and false for failure,
            // or return base.AuthorizeCore(httpContext) to defer to the base implementation
        }
    }
    

    【讨论】:

    • 我想这是我试图找出的一部分 - 如果有可能不弄乱 MVC 源代码......谢谢!
    • 这并不像您想象的那么难。我已经举了一个例子。
    猜你喜欢
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多