Редагувати: Оскільки 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();
}
}