Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Fazendo LOGOUT no SecurityConfiguration.

Aula 04 - Personalizando login e logout

Criei um botão para logout nas páginas.jsp. Quando eu clico no botão desloga e vai para página de login que eu criei, até aí ok.

Mas quando eu faço o login novamente ele envia a URL (http://localhost:8080/casadocodigo/login?logout), sendo necessário clicar 2x no botão de logar.

Como deslogar e redirecionar para a home.jsp ou interromper a URL de logout para não clicar 2x no botão de login?

3 respostas
solução!

você pode criar um SuccessHandler customizado.

public class CustomSuccessLoginHandler extends SavedRequestAwareAuthenticationSuccessHandler {

    private RequestCache requestCache = new HttpSessionRequestCache();

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
            Authentication authentication) throws IOException, ServletException {
        SavedRequest savedRequest = requestCache.getRequest(request, response);
        if(savedRequest==null || savedRequest.getRedirectUrl().contains("logout")){
            response.sendRedirect("/urlDeSucesso");
        } else {
            super.onAuthenticationSuccess(request, response, authentication);            
        }
    }

    @Override
    public void setRequestCache(RequestCache requestCache) {
        super.setRequestCache(requestCache);
        this.requestCache = requestCache;
    }
}

Aí na classe de configuração, vc pede para usar seu handler.

anyRequest().authenticated().and().formLogin().loginPage("/login")
                    .successHandler(new CustomSuccessLoginHandler())

Usei esse método e deu certo também: .logoutSuccessUrl("/");

Obrigado.

Usei esse metodo .logoutSuccessUrl("/produtos") tbm e funcionou! Valeu!