Ben*_*Ben 5 asp.net-mvc authorization controller roles
我目前在我的MVC应用程序中对过滤器中的授权角色进行硬编码,如下所示:
[Authorize(Roles = "Administrator,Manager")]
Run Code Online (Sandbox Code Playgroud)
我想最终有办法将角色映射到每个控制器,以便站点管理员可以处理分配哪些角色可以执行每组操作.
string roles = DoSomethingToGetAllowableRoles(controllerName);
[Authorize(Roles = roles)]
Run Code Online (Sandbox Code Playgroud)
我想我需要有一个数据库表,以某种方式保存每个控制器的列表,然后另一个表将控制器映射到角色.我想要的是一个页面,我可以列出每个控制器,然后有一组复选框,列出适用于该控制器的每个角色.
任何人都有一个例子,或者可以引导我朝着完成这个目标的方向前进?
您将需要编写自己的授权过滤器(可能通过扩展内置的过滤器).
原因是您无法像这样动态分配属性参数.
您不需要搞乱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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2389 次 |
| 最近记录: |