Wie kann ich den Namen des von ASP.NET MVC verwendeten Parameters "ReturnUrl" ändern?

8

ReturnUrl ist irgendwie hässlich. Ich möchte stattdessen redirect verwenden. Wie kann ich den Namen des Parameters angeben, der in Verbindung mit dem [Authorize] -Attribut für Formularauthentifizierungs-Weiterleitungs-URLs verwendet werden soll? Oder muss ich eine IAuthorizationFilter-Implementierung erstellen? : (

Beispiel:

%Vor%

Wenn ein Benutzer, der nicht angemeldet ist, Ссылка aufruft, möchte ich, dass er auf " http://example.com/account/logon?redirect=%2ftools " anstatt auf " Standard http://example.com/Account/LogOn?ReturnUrl=%2ftools

Für den / account / logon Teil kann ich meine Routen in Global.asax ändern und

ändern %Vor%

in web.config. Aber ich weiß nicht, wie man den ReturnUrl-Parameter ändert.

    
Jake Petroules 07.08.2011, 01:28
quelle

7 Antworten

1

Nicht die beste Lösung, aber es funktioniert ...

%Vor%     
Jake Petroules 07.08.2011, 02:21
quelle
10

Fügen Sie diesen Schlüssel zum appSettings-Abschnitt Ihrer web.config

hinzu %Vor%     
Fabian Vilers 12.06.2013 12:16
quelle
2

Die Frage und die Antworten hier scheinen sich auf das alte Form-Authentifizierungs-Zeug zu beziehen. Bei neueren Versionen von MVC, z.B. MVC 5 (mit Identity 2.0), würden Sie so etwas in der Startup.Auth.cs :

tun %Vor%

Der wichtige Teil ist natürlich ReturnUrlParameter = "redirect" (kann alles sein). Der Rest könnte für Ihr Projekt anders sein.

    
hug 11.12.2015 10:48
quelle
0

Das Problem hierbei ist, dass eine Weiterleitung kein Post ist. Es ist ein Get. Die einzige Möglichkeit, eine Variable an get zu übergeben, besteht darin, einen Abfragezeichenfolgenparameter eines bestimmten Typs zu verwenden. Sie können diese URL-Umschreibung zwar verschleiern, aber es ist immer noch ein Abfrageparameter und hat die URL weitergegeben.

Vielleicht könnten Sie ein wenig klarer darüber sein, wonach Sie suchen?

    
Erik Funkenbusch 07.08.2011 01:33
quelle
0

Es gibt keine Möglichkeit, den Namen des Parameters mithilfe der Konfiguration zu ändern, da der Parametername "ReturnUrl" in der System.Web.Security.FormsAuthentication-Klasse fest codiert ist. Dies ist die Klasse, die für die Formularauthentifizierung verwendet wird Weiterleitungen

Eine Möglichkeit, das gewünschte Ergebnis zu erzielen, besteht darin, das Attribut Autorisieren so zu erweitern, dass es mit Ihrem benutzerdefinierten Parameternamen auf die Anmeldeseite umleitet. Abhängig von den zusätzlichen Methoden von FormsAuthentication, die Sie verwenden, können Sie diese auch ändern, insbesondere FormsAuthentication.RedirectFromLoginPage.

    
eulerfx 07.08.2011 01:54
quelle
-1

Der Parametername kann nicht geändert werden, was ärgerlich ist. Ich habe dies gelöst, indem ich mein eigenes Authentifizierungsmodul geschrieben habe - Sie müssen wissen, wie die Authentifizierung im Inneren funktioniert, aber es ist nicht schwer - schauen Sie einfach, wie es in Reflector gemacht wird (und möglicherweise vereinfachen, verwendete ich nur Cookie-Verschlüsselung / Entschlüsselung von FormsAuthentication).

    
Lukáš Novotný 07.08.2011 02:10
quelle
-1

Fügen Sie einfach in Ihrem web.config im Abschnitt appSettings folgende Schlüssel / Wert-Paare hinzu:

%Vor%     
Oleksandr Shpachuk 22.09.2014 08:08
quelle

Tags und Links