Editar: Desde ASP.NET MVC 4 el mejor enfoque es simplemente usar el atributo incorporado AllowAnonymous.
La respuesta a continuación se refiere a las versiones anteriores de ASP.NET MVC
Se puede crear un atributo de autorización personalizado heredando de la AuthorizeAttribute de serie con un parámetro booleano opcional para especificar si se requiere o no la autorización.
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);
}
}
A continuación, se puede decorar el controlador de base con ese atributo:
[OptionalAuthorize]
public class ControllerBase : Controller
{
}
y para todos los controladores que no desea la autorización sólo tiene que utilizar la anulación con un 'falso' - por ejemplo,
[OptionalAuthorize(false)]
public class TestController : ControllerBase
{
public ActionResult Index()
{
return View();
}
}
He pensado en esto, pero yo estaba esperando una solución más simple. Sin embargo, si "ellos" no proporcionaron uno, entonces su solución es la mejor. –
Es mejor usar el atributo '[AllowAnonymous]'. – Jaider
Espera ... ¿entonces el controlador solo respeta el atributo de la clase de nivel superior de un tipo particular? – Triynko