Tengo un método decorado con dos ActionFilterAttribute personalizado.ASP.NET MVC: Response.Redirect (url, TRUE) no detiene el proceso de solicitud
[RequiresAuthentication(Order = 1)]
[ToonAction(Order = 2)]
public ActionResult Browse(...
RequiresAuthentication
atributo proviene de this article
Dentro RequiresAuthentication, en la que está OnActionExecuting hago:
filterContext.HttpContext.Response.Redirect(loginUrl, true);
La línea se se ejecutan, y los argumentos son todos como se esperaba. El problema es que después de ejecutar la línea anterior, obtengo el siguiente atributo (ActionFilterAttribute) ejecutado, como si el redireccionamiento no funcionara, simplemente continúa ejecutando la solicitud, en lugar de simplemente redirigir el navegador.
Pregunta: qué más qué necesito hacer para que el controlador de solicitudes
Este es un método completo:
public override void OnActionExecuting(ActionExecutingContext filterContext) {
//redirect if not authenticated
var identity = filterContext.HttpContext.User.Identity;
if (!identity.IsAuthenticated) {
//use the current url for the redirect
string redirectOnSuccess = filterContext.HttpContext.Request.Url.PathAndQuery;
//send them off to the login page
string redirectUrl = string.Format("?ReturnUrl={0}", redirectOnSuccess);
string loginUrl = FormsAuthentication.LoginUrl + redirectUrl;
filterContext.HttpContext.Response.Redirect(loginUrl, true);
// filterContext.Result = new HttpUnauthorizedResult();
// filterContext.HttpContext.Response.StatusCode = 0x191;
}
}
Esto resultó ser la respuesta que necesitaba: estaba haciendo una redirección en la respuesta, y durante meses no pude entender por qué recibía los errores de "No se puede establecer la cookie". –