Ich verwende Spring Security mit REST und verwende die URL (/logout
) als Endpunkt für meine Abmeldemethode. Nachdem ich diese Methode aufgerufen habe, leite sie mich zu (/login?logout
) weiter. Ich weiß, dass dies die logOutSuccessUrl
ist. Und ich möchte die Umleitung loswerden. Das ist mein Code:
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login").permitAll()
.anyRequest().fullyAuthenticated()
.and().requiresChannel().anyRequest().requiresSecure()
.and().httpBasic().disable().logout()
.disable()
// .logoutSuccessHandler(new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK))
.csrf().disable();
}
Ich habe versucht, HttpStatusReturningLogoutSuccessHandler
zu verwenden, aber es hat nicht funktioniert, und selbst die Einstellung von logoutSuccessUrl()
ändert nichts.
Wissen Sie, wie ich diese Umleitung deaktivieren kann?
Der folgende Code funktioniert für mich (beachte, dass es keine logout().disable()
gibt)
http.logout().permitAll();
http.logout().logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)));
Da es noch keine akzeptierte Antwort gibt, poste ich meine Lösung, die für mich funktioniert hat:
.logout()
.logoutUrl("/api/user/logout")
.permitAll()
.logoutSuccessHandler((httpServletRequest, httpServletResponse, authentication) -> {
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
})
.and()
Geben Sie nach erfolgreicher Abmeldung einfach ein sauberes HTTP_OK (200) zurück - spring leitet Sie in diesem Fall nicht weiter
Verwenden Sie diese Methode:
.logout().logoutSuccessUrl("enter address here where you want to go after logout")
Für diejenigen, die XML config verwenden, ist hier das entsprechende Snippet für das von Tahir Akhtar .
Konfigurieren Sie das <http>
-Element im <logout>
-Element wie folgt:
<logout
logout-url = "/some/path/for/logout"
invalidate-session = "true"
delete-cookies = "JSESSIONID"
success-handler-ref = "httpStatusReturningLogoutSuccessHandler"
/>
Und definiere httpStatusReturningLogoutSuccessHandler
bean wie folgt:
<bean
id = "httpStatusReturningLogoutSuccessHandler"
class = "org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler"
/>
Vielleicht möchten Sie dies versuchen
http.logout (). logoutRequestMatcher (neuer AntPathRequestMatcher ("/ thisistomisleadlogoutfilter"));
Dies leitet/thisistomisleadlogoutfilter effektiv weiter, um sich anzumelden? Logout. Daher sollten Sie stattdessen/logout verwenden können
vergessen Sie für die Aktion logoutSuccessXXX () nicht, allowAll () hinzuzufügen, da das Cookie nach dem Aufrufen der Methode logout () gelöscht wird. Meine Musterlösung ist also:
http
......
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/logoutSuccess")
**.permitAll()**