在ASP.NET MVC中,您在操作方法上方添加[Authorize]属性,以指定必须对用户进行身份验证(并在适当的指定角色中)才能使用该方法。
这有点像'选择加入'身份验证 - 我必须记住装饰我想要保护的每个方法,这很容易出错。
除了控制器或我列入白名单的操作外,我如何指定所有内容都需要身份验证?
答案 0 :(得分:2)
这是基本的想法。您应该使用它来获得所需的结果 - 尤其是当控制器内的某些操作需要授权时,某些操作需要 - 而不是。 如您所知,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 );
...
}
答案 1 :(得分:1)
默认情况下,您不能,但请参阅此答案,了解有关创建自己的自定义授权属性的信息:Override Authorize Attribute in ASP.NET MVC。