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?
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:
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:
Fügen Sie schließlich Ihre Success-Handler-Klasse in Ihre Spring Security-Konfiguration ein, wie in Ссылка
beschriebenIch freue mich auf Ihre Kommentare oder andere Lösungen für dieses Problem.
Tags und Links spring spring-mvc spring-security