在ASP.NET MVC 4中实现IAutorizationFilter 4
问题描述:
我试图根据IAuthorizationFilter
在ASP.NET MVC 4
上构建过滤器来限制对某些控制器的访问。在ASP.NET MVC 4中实现IAutorizationFilter 4
这个想法是,如果Web应用程序的最终用户具有适当的权限,则允许他访问,而在其他情况下,他不会。
所以我试图在最后,获得基于User.Identity.Name
的布尔权限,然后检查他是否有权利。
我是否需要实现与我拥有BOOL权限一样多的过滤器,或者只有一个过滤器可以完成这项工作? 我该如何执行此操作?有什么好主意吗?
答
不,你不必这样做。您如何确定每个用户的权限可以在OnAuthorization
之内完成,或者重构为单独的静态方法并在OnAuthorization
之内调用。
但是,当你使用使用自定义授权属性对于任何Action
方法或为Controller
,你应该可以说,只有Create
权限的用户可以与Read
权限可以访问此controller
访问Action
或用户。请看看这篇博文。
,你会发现有定义
public int StartTime { get; set; }
public int EndTime { get; set; }
,而不是两个变量,你可以使用
public bool AllowRead {get;set;}
public bool AllowWrite {get;set;}
然后使用授权的属性如下
[HttpPost]
[CustomAuthorize(AllowRead = false, AllowWrite = true)]
public ActionResult Create(Model model)
{
//your code
}
上面的
只是这样做的一种方式。另一种方法是使用枚举标志。请看看这个答案。
感谢您的回复。权限被存储到与成员关系表相关的表(类)中。所以,我试图获得当前登录用户的权限并检查他/她是否有权执行控制器操作。特权允许利用所有控制器的方法。 – ABCmo