C# ASP.Net MVC: RedirectFromLoginPage geht immer um die Standard-url, und nicht zu returnurl
Ich habe eine MVC4-Anwendung mit Mitgliedschafts-Anmeldung (über die FormsAuthentication).
Dieser ist definiert im web.config wie folgt.
Mein Standard-url home Stammverzeichnis (~/):
<roleManager enabled="true" />
<authentication mode="Forms">
<forms defaultUrl="~" loginUrl="~/Account" />
</authentication>
In meinem AccountController im Login-post-Methode folgenden code relevant ist.
Dieser code wird ausgeführt, wenn der Benutzer klickt auf den login mit gültigen Anmeldedaten an.
if (Membership.ValidateUser(creds.Username, creds.Password))
{
FormsAuthentication.RedirectFromLoginPage(creds.Username, false);
return null;
}
Nun, wenn ich mich navigieren (anonym) zu: ~/Admin, ich bekommen umgeleitet zu ~/- Konto anmelden, das ist perfekt. Ich kann sehen, dass die url wie folgt gebildet wird:
http://localhost:23759/Account?ReturnUrl=%2fAdmin
Aber, wenn ich erfolgreich login, bekomme ich die Weiterleitung zu home (~/) anstelle von ~/Admin
Bitte Hilfe!!!
Vielen Dank!
Edit: Gefunden, das eigentliche Problem war: es war die post-Methode, die nicht erhalten die querystring -
- Aus der MSDN-Website (msdn.microsoft.com/en-us/library/ka5ffkce.aspx): "Wenn die ReturnURL-variable nicht existiert, wird Sie die Methode RedirectFromLoginPage leitet auf die URL in der DefaultUrl-Eigenschaft." Sieht aus wie .NET-weiß nicht-Admin vorhanden ist. Vielleicht ist der Schrägstrich ("%2f") das Problem verursacht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich die Lösung gefunden!
Dank FlopScientist, wer hat mich zum nachdenken weiter.
War es in der Tat, denn ich war dabei ein POST-Methode, die nicht den QueryString aus der BEKOMMEN berücksichtigt.
Zuerst hatte ich das in meiner Ansicht:
Habe ich aktualisiert, die folgenden:
Nun kann ich tatsächlich sehen, dass ein querystring in meine debug-und ich bekomme eine korrekte redirect.
Es scheint nicht, ein Problem mit Ihrer Rückkehr URL: [ %2f
/
]localhost:23759/Account?ReturnUrl=%2fAdmin
So, was bleibt ist zu tun, einige Prüfungen zu, was die Ursache für ein solches Verhalten.
1.) Sind Sie sicher, dass der return-Seite werden wie angegeben in der return url:
tatsächlich existiert und der Benutzer hat Zugriff darauf?Hier Admin ist ein Ordner, so müssen Sie eine Seite
default.aspx
in diesem Ordner. Wenn es nicht vorhanden ist,RedirectFromLoginPage
standardmäßig senden SieDefaultURL
.2.) Versuchen Sie auch, mit FormsAuthentication.GetRedirectUrl() Methode, um zu sehen, was passiert.
3.) ODER hat das funktioniert ? [ Empfohlen für debug-Zwecke ]
Schließlich stellen Sie sicher, es gibt KEINE solche code-Zeilen umleiten Benutzer auf andere Seiten/DefaultURL.
Ist es wahrscheinlich, weil, dass der Pfad nicht erkannt, wie dieselben app-Pfad:
aus: http://msdn.microsoft.com/en-US/library/1f5z1yty.aspx