Ich benutze Spring Security Login-Mechanismus für meine Anwendung und alles getestet. Die Dinge waren in Ordnung. Ich habe den folgenden Anwendungsfall
Dies ist der Java-Code, der zum Umleiten des Benutzers an seinen ursprünglichen Ort verwendet wird.
%Vor%RedirectionStrategy wird hier verwendet DefaultRedirectStrategy , die Dinge haben gut funktioniert. Anwendung wird jetzt auf dem Pre Production-Server bereitgestellt und jetzt scheint dies nicht zu funktionieren und ich bekomme 404 Fehler.
Wenn der Kunde zur Startseite weitergeleitet wird, kommt targetUrl
als "/" heraus, ich habe einen Spring-Controller, der mit dieser Zuordnung benannt ist
Der aktuelle Pre-Prod-Code meiner Anwendung lautet prepd-www.mysite.com
. Wenn also sendredirect zur Aktion kommt, wird die URL der Webseite in prepd-www.mysite.com/prepd-www.mysite.com
Ich bin mir nicht sicher, was dieses Problem verursacht. ist es wegen der Proxy-Server-Einstellungen? Kann mir jemand die mögliche Ursache dieses Problems vorschlagen?
Ich habe es bereits auf allen lokalen Maschinen und gut auf unserer QA versucht, aber alles funktioniert perfekt.
Die aktuelle Einstellung für die Umgebung, in der dies geschieht, ist
Nur eine wilde Vermutung, da Sie weder die Reverse-Proxy-Konfiguration, noch die genaue URL in pre-prod und in developement angeben konnten.
Sie sagen, dass Sie DefaultRedirectStrategy
von Spring security verwenden. Diese Strategie hat eine Option (contextRelative), die den ServletContext-Pfad der URL voranstellt. Wenn Sie in Ihrem Entwicklungssystem den Wurzelkontext verwendet haben, dh wenn Sie auf die Homepage z. B. zugegriffen haben: http://localhost:8080/
Der serlet-Kontext war leer.
Aber wenn jetzt in preprod, der Servlet-Kontext ist nicht mehr root, sondern sagen /myApp
einmal von Apache Reverse-Proxy übersetzt , wenn Sie umleiten erhalten Sie eine URL von /myApp/myApp
, die sein könnte übersetzt zurück zu dem, was Sie gegeben haben.
Sie könnten versuchen zu kontrollieren, ob Sie contextRelative
als true
in DefaultRedirectStrategy
haben und wenn ja, wenn Sie false setzen können und auch kontrollieren, ob Sie auf absolute oder relative URLs umleiten.
Wenn Sie Apache im Vordergrund verwenden, überprüfen Sie die Rewrite-Regel und leiten Sie die Regeln der Apache-Konfiguration um. Der beste Weg wäre, SSH-Tunnel direkt auf den Anwendungsserver (durch Überspringen von Apache) und testen. Wenn es funktioniert, bedeutet das, dass Ihre Anwendungskonfiguration in Ordnung ist und in Apache behoben werden muss.
Benutzt du in der Vorproduktion Tomcat oder einen anderen Anwendungsserver ?, normalerweise, wenn dein Krieg foo und dein Commit zu Tomcat aufruft, ist der Pfad für diesen Krieg
%Vor%Wenn Sie also Servlet verwenden, müssen Sie in Ihrer web.xml angeben, dass der Hauptpfad foo / *
lautetTags und Links java spring java-ee spring-security