2016-08-02 17 views

Antwort

0

Wenn Sie mithilfe der Formularauthentifizierung auf eine Seite zugreifen, für die eine Authentifizierung erforderlich ist, leitet ASP.NET Sie zur Anmeldeseite weiter und übergibt die ReturnUrl als Parameter.

Sie müssen also nur diesen Parameter verwenden, um den Benutzer an die Stelle zurückzuversetzen, an der er zuvor war.

public ActionResult Login(string username, string pass, string returnUrl) 
{ 
    // code to authenticate user here... 

    if (!string.IsNullOrEmpty(returnUrl)) 
    return Redirect(returnUrl); 

    return RedirectToAction("Index", "Home"); 
} 

Sie möchten vielleicht auch FormsAuthentication.RedirectFromLoginPage

Redirects an authenticated user back to the originally requested URL or the default URL. 

https://msdn.microsoft.com/en-us/library/ka5ffkce(v=vs.110).aspx

Hinweis mit berücksichtigen, dass diese Methode aufrufen wird auch das Authentifizierungscookie ausgeben, dass Sie bereits tun könnte. Du musst also überprüfen, ob du das nicht zweimal tust.

Edit: Siehe https://stackoverflow.com/a/1206728/722778

Sie generieren Ihre Form vielleicht ein Controller eine Aktion (zB Html.BeginForm ("Logon", "Account") Angabe

In diesem Fall versuchen Sie, mit nur das? Ihrer Ansicht nach:

Html.BeginForm() 

Oder die ReturnUrl Parameter yourselve vorbei:

Html.BeginForm("LogOn", "Account", new {ReturnUrl = Request.QueryString["ReturnUrl"] }) 
+0

Das Problem ist, dass die Login-Funktion niemals die returnUrl empfängt, wenn sie umgeleitet werden, und ich kann nicht herausfinden, wie ich sicherstellen kann, dass sie übergeben wird. –

+0

Bitte sehen Sie meine letzte Änderung – hernant