Bearbeiten: Seit ASP.NET MVC 4 besteht der beste Ansatz darin, einfach das integrierte AllowAnonymous- Attribut zu verwenden.
Die folgende Antwort bezieht sich auf frühere Versionen von ASP.NET MVC
Sie können ein benutzerdefiniertes Autorisierungsattribut erstellen, das vom Standard-AuthorizeAttribute mit einem optionalen bool-Parameter erbt, um anzugeben, ob eine Autorisierung erforderlich ist oder nicht.
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);
}
}
Dann können Sie Ihren Basis-Controller mit folgendem Attribut dekorieren:
[OptionalAuthorize]
public class ControllerBase : Controller
{
}
und für alle Controller, für die Sie keine Autorisierung wünschen, verwenden Sie einfach die Überschreibung mit einem 'false' - z
[OptionalAuthorize(false)]
public class TestController : ControllerBase
{
public ActionResult Index()
{
return View();
}
}