是否可以修饰一个类或动作来忽略AuthorizeAttribute等全局属性?

时间:2014-06-06 01:45:17

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我正在使用MVC3,ASP.NET4.5,C#和Razor。

我想设置一个全局属性,即AuthorizeAttribute。但是,我需要确保某些类和/或操作忽略此全局设置。是否可以装饰一个类和/或动作以确保这一点,如果是这样的话?

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用[AllowAnonymous]属性(ASP.NET MVC中的默认属性)覆盖您的[Authorize]属性

假设您已将自定义授权逻辑添加到默认FilterConfig类:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new MyCustomAuthorizationAttribute());
    }
}

您可以通过使用[AllowAnonymous]

修饰控制器/操作方法来覆盖该设置
// To allow anonymous access to all action methods
[AllowAnonymous]
public class MyController : Controller
{
    // Only allow the Index action method to be called anonymously
    [AllowAnonymous]
    public ActionResult Index()
    {
    }
}