在ASP.NET MVC 4中实现IAutorizationFilter 4

问题描述:

我试图根据IAuthorizationFilterASP.NET MVC 4上构建过滤器来限制对某些控制器的访问。在ASP.NET MVC 4中实现IAutorizationFilter 4

这个想法是,如果Web应用程序的最终用户具有适当的权限,则允许他访问,而在其他情况下,他不会。

所以我试图在最后,获得基于User.Identity.Name的布尔权限,然后检查他是否有权利。

我是否需要实现与我拥有BOOL权限一样多的过滤器,或者只有一个过滤器可以完成这项工作? 我该如何执行此操作?有什么好主意吗?

不,你不必这样做。您如何确定每个用户的权限可以在OnAuthorization之内完成,或者重构为单独的静态方法并在OnAuthorization之内调用。

但是,当你使用使用自定义授权属性对于任何Action方法或为Controller,你应该可以说,只有Create权限的用户可以与Read权限可以访问此controller访问Action或用户。请看看这篇博文。

http://codeutil.wordpress.com/2013/05/14/forms-authentication-in-asp-net-mvc-4/#mvc-implement-custom-authorization-filter

,你会发现有定义

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 
} 
上面的

只是这样做的一种方式。另一种方法是使用枚举标志。请看看这个答案。

How could I use my own database table for MVC 4 user control (and authorizing with boolean fields in role table)?

+0

感谢您的回复。权限被存储到与成员关系表相关的表(类)中。所以,我试图获得当前登录用户的权限并检查他/她是否有权执行控制器操作。特权允许利用所有控制器的方法。 – ABCmo