Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Redirect após login

Gosaria de especificar a pagina que gostaria que o usuario fosse enviado assim que o login for ok. Seguindo o curso ele sempre vai para a ultima pagina acessada, por exemplo, acabei de subir a aplicação estamos em "casadocodigo" e mudo a url para "casadocodigo/login" se tudo deu certo ele volta pra "casadocodigo", agora se faço "casadocodigo/logout" sou redirecionado para "casadocodigo/login" e se logo novamente a pagina fica parada em "casadocodigo/login?logout". Gostaria de poder redirecionar para "casadocodigo/produtos" por exemplo. Tentei criar um metodo POST no controller ou adicionar .and().formLogin().loginPage("/login").defaultSuccessUrl("/produtos").permitAll()

la no security, mas não deu certo. Alguem pode me ajudar, meu fonte está no github: https://github.com/frcunha/casadocodigo

e aqui os codigos envolvidos: //Segurança @Override protected void configure(HttpSecurity http) throws Exception {

//orders das regras faz diferença => ideal fazer bloqueios primeiro depois liberações http.authorizeRequests() .antMatchers("/produtos/form").hasRole("ADMIN") //no banco de dados sempre tem que constar ROLE_ .antMatchers("/carrinho/").permitAll() .antMatchers("/pagamento/").permitAll() .antMatchers(HttpMethod.POST, "/produtos").hasRole("ADMIN") .antMatchers(HttpMethod.GET, "/produtos").permitAll() .antMatchers("/produtos/").permitAll() //libera tudo que não foi bloqueado antes no cas /produtos/form ficará bloqueado .antMatchers("/resources/").permitAll() //css, imagens, js.... .antMatchers("/").permitAll() .anyRequest().authenticated() .and().formLogin().loginPage("/login").permitAll() .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")); }

pagina de login ` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Login da Casa do Código

${SPRING_SECURITY_LAST_EXCEPTION.message}

Login
Senha

`

e controller

@Controller public class LoginController {

@RequestMapping(value = "/login", method = RequestMethod.GET) public ModelAndView loginForm(Usuario usuario) { ModelAndView mv = new ModelAndView("loginForm");

return mv; }

}

Obrigado

1 resposta
solução!

Opa consegui,

.and().formLogin().loginPage("/login").defaultSuccessUrl("/produtos").permitAll()

na linha acima é so colocar um segundo parametro no defaultSuccessUrl, ficando assim:

.and().formLogin().loginPage("/login").defaultSuccessUrl("/produtos", true).permitAll()