J'ai une méthode décorée avec deux ActionFilterAttribute personnalisés.ASP.NET MVC: Response.Redirect (url, TRUE) n'arrête pas le traitement des demandes
[RequiresAuthentication(Order = 1)]
[ToonAction(Order = 2)]
public ActionResult Browse(...
RequiresAuthentication
attribut vient this article
intérieur RequiresAuthentication, sur c'est OnActionExecuting que je fais:
filterContext.HttpContext.Response.Redirect(loginUrl, true);
La ligne est sont exécutées, et les arguments sont tous comme prévu. Le problème est qu'après l'exécution de la ligne ci-dessus, j'obtiens l'attribut suivant (ActionFilterAttribute) exécuté, comme si la redirection ne fonctionnait pas, il continuait juste d'exécuter la requête, au lieu de simplement rediriger le navigateur.
Question: Que dois-je faire pour rendre le gestionnaire de requêtes
Ceci est une méthode complète:
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;
}
}
Cela s'est avéré être la réponse dont j'avais besoin - je faisais une redirection sur la réponse, et pendant des mois je ne pouvais pas comprendre pourquoi je recevais des erreurs "Impossible de mettre des cookies". –