C# ASP.Net MVC: RedirectFromLoginPage va toujours à l'url par défaut, et de ne pas returnurl
J'ai un MVC4 application avec l'Appartenance à l'ouverture de session (par FormsAuthentication).
Cela est défini dans le web.config comme suit.
Mon url par défaut est la maison de la racine (~/):
<roleManager enabled="true" />
<authentication mode="Forms">
<forms defaultUrl="~" loginUrl="~/Account" />
</authentication>
Dans mon AccountController dans la Connexion de la méthode post, le code suivant est pertinent.
Ce code est exécuté lorsque l'utilisateur clique sur la connexion avec des informations d'identification valides.
if (Membership.ValidateUser(creds.Username, creds.Password))
{
FormsAuthentication.RedirectFromLoginPage(creds.Username, false);
return null;
}
Maintenant, si je suis la navigation (de façon anonyme): ~/Admin, j'ai redirigé vers ~/Compte pour se connecter, ce qui est parfait. Je peux voir que l'url est formé de la façon suivante:
http://localhost:23759/Account?ReturnUrl=%2fAdmin
Mais, quand j'ai réussi à la connexion, j'ai redirigé vers la maison (~/) au lieu de ~/Admin
S'il vous plaît aider!
Merci beaucoup!
Edit: Trouvé le problème réel: c'était la méthode post qui n'était pas à la réception de la querystring
OriginalL'auteur Recipe | 2013-09-13
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution!
Grâce à FlopScientist, qui m'a fait penser plus loin.
En effet, il était parce que je faisais un méthode POST, qui n'a pas pris la chaîne de Requête à partir de la OBTENIR en compte.
Première fois que j'avais c'est à mon avis:
J'ai mis à jour à la suite:
Maintenant, je peux voir une querystring dans mon debug et je reçois un bon de redirection!
OriginalL'auteur Recipe
Il ne semble pas tout problème avec votre URL de Retour: [ %2f est
/
]localhost:23759/Account?ReturnUrl=%2fAdmin
Donc, ce qui reste est de faire quelques vérifications quant à ce qui est à l'origine de tels comportements.
1.) Êtes-vous sûr que la page de retour, comme spécifié dans l'url de retour:
existe réellement et que votre utilisateur a accès?Ici, l'Admin est un dossier, vous devez avoir une page
default.aspx
à l'intérieur de ce dossier. Si elle n'existe pas,RedirectFromLoginPage
par défaut va vous envoyer àDefaultURL
.2.) Aussi, Essayez d'utiliser FormsAuthentication.GetRedirectUrl() méthode pour voir ce qui se passe.
3.) OU n'cela fonctionne ? [ Recommandé à des fins de débogage ]
Enfin, assurez-vous il n'y a PAS de lignes de code de rediriger l'utilisateur vers d'autres pages/DefaultURL.
OriginalL'auteur R.C
C'est probablement parce que le chemin n'est pas détecté comme même chemin app:
à partir de: http://msdn.microsoft.com/en-US/library/1f5z1yty.aspx
OriginalL'auteur Braian