wake-up-neo.com

Federsicherheit - Deaktivieren Sie die Abmeldeumleitung

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?

12
uncallable

Der folgende Code funktioniert für mich (beachte, dass es keine logout().disable() gibt)

http.logout().permitAll();
http.logout().logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)));
23
Tahir Akhtar

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

10
Sebastian

Verwenden Sie diese Methode:

.logout().logoutSuccessUrl("enter address here where you want to go after logout")
2
Ahmad

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"
/>
1
Younes

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

1
user3888170

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()**
0
Aura