Edit: Depuis ASP.NET MVC 4, la meilleure approche consiste simplement à utiliser l' attribut AllowAnonymous intégré .
La réponse ci-dessous fait référence aux versions antérieures d'ASP.NET MVC
Vous pouvez créer un attribut d'autorisation personnalisé héritant de l'AutorizeAttribute standard avec un paramètre booléen facultatif pour spécifier si l'autorisation est requise ou non.
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);
}
}
Ensuite, vous pouvez décorer votre contrôleur de base avec cet attribut:
[OptionalAuthorize]
public class ControllerBase : Controller
{
}
et pour tous les contrôleurs que vous ne voulez pas d'autorisation, utilisez simplement le remplacement avec un 'faux' - par exemple
[OptionalAuthorize(false)]
public class TestController : ControllerBase
{
public ActionResult Index()
{
return View();
}
}