Ich benutze Spring-Boot (1.3.5) + oauth2 (Feder-Cloud-Starter-oauth2). Ich möchte einige LogoutSuccessHandler testen, aber ich kann es nicht aufrufen.Spring LogoutSuccessHandler nicht aufgerufen
Dies ist meine Sicherheitskonfiguration:
@Configuration
@EnableWebSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private LogoutHandler logoutHandler;
@Override
public void configure(HttpSecurity http) throws Exception {
http
.anonymous().disable()
.httpBasic().disable()
.authorizeRequests()
.antMatchers("/index.html", "/", "/resources/**", "/css/**").permitAll()
.anyRequest().authenticated();
http.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessHandler(logoutHandler);
//.invalidateHttpSession(true).deleteCookies("JSESSIONID", "SESSION");
}
}
Das ist mein logoutHandler
@Component
public class LogoutHandler extends AbstractAuthenticationTargetUrlRequestHandler implements LogoutSuccessHandler {
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
setDefaultTargetUrl("/");
super.handle(request, response, authentication);
}
}
Wenn ich die Anwendung debuggen und setzen Sie den Haltepunkt auf die logoutHandler wird es nie aufgerufen. Fehle ich etwas in dieser Konfiguration?
Dank
Auch wenn ich Ihren Vorschlag versuchen, es funktioniert nicht :(Seltsame ist, dass, wenn ich Post an localhost senden: 8080/ui/logout Ich erhalte Fehler GET http: // localhost: 8080/Anmelden/Abmelden 404 (Nicht gefunden) – bilak
Warum brauchen Sie die @ Ordnung? Können Sie es entfernen und versuchen? –