在ASP.NET MVC中进行身份验证
可能重复:
覆盖ASP.NET MVC中的授权属性
在ASP.NET MVC中,您添加操作方法上方的[授权]属性以指定用户必须经过身份验证(并在适当情况下以指定的角色)以使用该方法。
这有点像'选入'认证 - 我必须记住装饰每一个我想保护的方法,这是容易出错的。
我可以如何指定除白名单控制器或操作之外的任何事情都需要身份验证?
这是基本的想法。 你应该玩这个来获得预期的结果 - 特别是当控制器内的某些操作需要授权时,有些不需要授权。 如您所知,asp.net mvc框架的每个部分都可以定制。 它的过滤器提供机制也是如此。 首先,创建IFilterProvider实现来提供授权过滤器
public class AuthorizeFilterProvider : IFilterProvider
{
public List<Type> AuthorizationExcludedControllerTypes = new List<Type>();
#region IFilterProvider Members
public IEnumerable<Filter> GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
{
if (!AuthorizationExcludedControllerTypes.Contains(controllerContext.Controller.GetType()))
{
yield return new Filter(new AuthorizeAttribute(), FilterScope.Controller, null);
//return filter only if it is not included into AuthorizationExcludedControllerTypes list.
}
}
#endregion
}
并将过滤器提供程序注册到Global.asax中
protected void Application_Start()
{
...
AuthorizeFilterProvider authorizeFilterProvider = new AuthorizeFilterProvider();
authorizeFilterProvider.AuthorizationExcludedControllerTypes.Add(typeof(HomeController));
FilterProviders.Providers.Add(authorizeFilterProvider );
...
}
默认情况下,你不能,但是看到这个答案是关于创建你自己的自定义授权属性的信息:在ASP.NET MVC中覆盖授权属性。
链接地址: http://www.djcxy.com/p/90169.html