asp.net-mvc - 将角色动态映射到 ASP.Net MVC 中的 Controller

标签 asp.net-mvc controller authorization roles

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

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

我希望最终有一种方法可以将角色映射到每个 Controller ,以便站点管理员可以处理分配可以执行每组操作的角色。
string roles = DoSomethingToGetAllowableRoles(controllerName);

[Authorize(Roles = roles)]

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

任何人都有一个例子或可以引导我朝着可以实现这一目标的方向发展?

最佳答案

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

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

您不需要弄乱 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
    }
}

关于asp.net-mvc - 将角色动态映射到 ASP.Net MVC 中的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765885/

相关文章:

Java认证/授权服务器

mysql - ASP.NET MVC 验证从 Controller 到 ajax 的查询

asp.net-mvc - MVC 优于 MVP 的优势

asp.net - 如何根据用户角色限制 asp.net 控制操作?

authorization - Keycloak Spring UMA 被拒绝

ruby-on-rails - Rails : Edit/Update Record, 使用当前记录字段条目填充文本字段

angularjs - 无法在 asp.net mvc 中显示来自 s3 存储桶的上传图像

jquery - 如何将按钮的点击事件绑定(bind)到PartialView(MVC)中?

laravel - Laravel 中某些 id 的 View 返回错误

php - Codeigniter:将数据从 Controller 传递到 View