Autorizar la clase de atributo de forma predeterminada toma el httpcontext como argumento. cuando es llamado. Luego verifica el valor de bool HttpContext.User.Identity.IsAuthenticated y actúa en consecuencia. Esto funciona solo si usa la autenticación Forms. Si está utilizando su propia lógica de inicio de sesión (por ejemplo, en objeto de sesión), puede derivar una clase de Authorize Attribute y llamarla.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
clsSession sess = httpContext.Session["Current"] as clsSession;
if (sess.IsLogin) return true;
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new ViewResult { ViewName = "Unauthorized" };
}
}
continuación, puede utilizar esta clase como esta:
[MyAuthorize]
public ActionResult Index()
{
return View();
}
Esto funcionará. Puede usar [Mi Autorización] en lugar de [Autorizar] en todas las acciones del controlador. Si devuelve falso, devolverá una vista (en este caso, "No autorizado"). El nombre de la vista podría ser cualquier cosa y se puede ubicar en la carpeta views/shared.
Muchas gracias. ¡Gran recurso! – Jose3d