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.
Fügen Sie diesen Schlüssel zum appSettings-Abschnitt Ihrer web.config
hinzu %Vor% 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
:
Der wichtige Teil ist natürlich ReturnUrlParameter = "redirect"
(kann alles sein). Der Rest könnte für Ihr Projekt anders sein.
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?
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.
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).
Fügen Sie einfach in Ihrem web.config im Abschnitt appSettings folgende Schlüssel / Wert-Paare hinzu:
%Vor%Tags und Links asp.net-mvc-3 c#