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}
`
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