Redirect auf die Seite mit # (Hash) Zeichen nach dem Login

9

Ich verwende Spring Security und frage mich, wie ich die Umleitung nach erfolgreicher Anmeldung auf der Quellseite implementieren kann, wenn diese Seite # (hash) sign enthält.

Im Moment benutze ich always-use-default-target="false" und es funktioniert gut bei URL Art von: /path/to/page/ .

Aber wenn die URL zu #/path/to/page wird, werden keine Umleitungen vorgenommen.

Gibt es eine Möglichkeit, es zu beheben?

    
nKognito 04.10.2012, 08:33
quelle

2 Antworten

12

Hier ist die Lösung, die ich am Ende benutzt habe:

%Vor%

Dieses Snippet fügt den Hash dem Aktionsattribut des Autorisierungsformulars hinzu und Spring leitet Sie ohne Probleme zu der URL von Art: #/path/to/page um.

    
nKognito 04.10.2012, 09:00
quelle
2

Vielleicht ist das die alte Frage, aber während meiner jüngsten Forschung zu diesem Thema stellte ich fest, dass das Problem weit verbreitet ist und immer noch besteht (besonders bei modernen AngularJS-Frontend-Apps mit Back-End-Sicherheit). Ich möchte meine Lösung mit Ihnen teilen.

Geben Sie auf der Anmeldeseite, z. B. /login.html, folgenden Code vor dem </body> -Tag ein:

%Vor%

Hinweis (1): Die Funktion btoa () funktioniert in IE & gt; = 10 ( Ссылка ), z ältere Browser verwenden jQuery-Äquivalent.

Hinweis (2): Die Verschlüsselung des # Teils der URL ist notwendig, da sie Sonderzeichen enthalten kann, die nicht in der Cookie-Wert-Zeichenfolge gespeichert werden dürfen.

Von der Serverseite aus müssen Sie onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) Methode der Klasse ändern, die AuthenticationSuccessHandler interface implementiert.

In meinem Fall erweitere ich einfach die Klasse SavedRequestAwareAuthenticationSuccessHandler und überschreibe die Methode onAuthenticationSuccess mit ihrem ursprünglichen Code. Dann erhalte ich den hashPart Cookie-Wert aus der Anfrage, dekodiere ihn und füge ihn der aufgelösten Weiterleitungs-URL hinzu. Mein Code-Fragment unten:

%Vor%

Fügen Sie schließlich Ihre Success-Handler-Klasse in Ihre Spring Security-Konfiguration ein, wie in Ссылка

beschrieben

Ich freue mich auf Ihre Kommentare oder andere Lösungen für dieses Problem.

    
Thomas Weglinski 04.06.2015 14:24
quelle