Comment résoudre Boucle de Redirection
J'ai une application web, et certains utilisateurs qui utilisent google Chrome, comme leur navigateur préféré de choix, obtenez l'erreur suivante quand ils ont déconnecté de l'application, et d'essayer de se reconnecter.
"Cette page web a une boucle de redirection".
Mon application web utilise l'authentification par formulaires, et la FormAuthenticationModule
redirige l'utilisateur vers la page de Connexion de mon application, je ne peux donc pas utiliser cette approche:
<customErrors mode="On" defaultRedirect="~/MyErrorPage.aspx" >
<error statusCode="401" redirect="~/NoAccess.aspx"/>
</customErrors>
Au lieu de cela, j'ai ajouté ce qui suit à la Page_Load
cas de mon LoginPage
.
if (Request.IsAuthenticated && !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
{
Response.Redirect("~/NoAccess.aspx");
}
Cependant, depuis que j'ai ajouté à cette approche, les utilisateurs semblent obtenir la "Boucle de Redirection" erreur.
Après désactivant les cookies, tout semble bien, mais le problème ne se reproduise.
Est-il une solution permanente pour ce que je peux ajouter à mon code, ou est-il autre chose que je puisse faire pour empêcher ce problème de se produire?
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter ceci à votre
web.config
fichier:Cela éteindra toute demande d'autorisation de cette page et devez arrêter Votre boucle.
Vous pouvez également ajouter cette:
Cela permettra de refuser l'accès à votre page de connexion pour tous les utilisateurs qui sont déjà authentifié.
La combinaison de ces deux devrait Vous permettre d'ajouter des messages d'erreur personnalisés pour toutes les redirections.
Vous pouvez également envisager de créer un répertoire pour les accès non autorisés (par exemple.
public/
) et les placer à l'intérieur de toutes les pages d'erreur (qui ne nécessitent pas d'être autorisé).Ensuite, Vous pouvez faire:
Vous pouvez en lire plus à propos de l'emplacement ici.
Et plus au sujet de l'autorisation ici.
Avait une très similaires problème et résolu dans IIS: Dans
Authentication
activer fonctionAnonymous Authentication
et désactiver tout le reste. Cela est logique, car finalement c'est l'application qui gère l'authentification de la logique et de ne pas l'IIS ou ASP.NET. Mais, évidemment, cette solution ne prend pas en charge l'élégant accès aux pages publiques comme @Grzegorz suggéré.J'ai aussi eu une redirection en boucle ce qui a entraîné le message d'erreur
The request filtering module is configured to deny a request where the query string is too long.
pour Visual Studio 2013 Site Web où l'Authentification a été définie pour des Comptes d'Utilisateur Individuels.L'URL demandée est une version longue de
http://localhost:52266/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl....
il a donc été constamment rediriger vers la page de connexion, et en ajoutant l'URL de retour à chaque fois.Aucune quantité de points d'arrêt dans une tentative pour trouver la délinquance de la boucle semble faire une différence, que aucun n'a été déclenchée.
À la fin, je a la suite de:
Anonymous Authentication
àEnabled
.Windows Authentication
àDisabled
.Lors du démarrage du projet de la page par défaut devrait maintenant apparaître et les points d'arrêt que vous avez ajouté devrait commencer à travailler.
C'est un vieux post et j'ai été confronté à ce problème lors de l'authentification personnalisée et de validation.
la question ai résolu en ajoutant cette ligne de code dans le web.config
Espère que cela aide.