Изменить: поскольку ASP.NET MVC 4, лучший подход - просто использовать встроенный атрибут AllowAnonymous .
Ответ ниже относится к более ранним версиям ASP.NET MVC.
Вы можете создать настраиваемый атрибут авторизации, наследующий от стандартного AuthorizeAttribute, с необязательным параметром bool, чтобы указать, требуется ли авторизация или нет.
public class OptionalAuthorizeAttribute : AuthorizeAttribute
{
private readonly bool _authorize;
public OptionalAuthorizeAttribute()
{
_authorize = true;
}
public OptionalAuthorizeAttribute(bool authorize)
{
_authorize = authorize;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if(!_authorize)
return true;
return base.AuthorizeCore(httpContext);
}
}
Затем вы можете украсить свой базовый контроллер этим атрибутом:
[OptionalAuthorize]
public class ControllerBase : Controller
{
}
и для любых контроллеров, для которых вам не нужна авторизация, просто используйте переопределение со значением false - например,
[OptionalAuthorize(false)]
public class TestController : ControllerBase
{
public ActionResult Index()
{
return View();
}
}