Boa tarde,
Estou tentando implementar uma forma de, após o Usuário fazer o cadastro, eu conseguir logar ele automaticamente.
Meu Controller de cadastro:
@RequestMapping(value = "/addUsuario", method = RequestMethod.POST)
public ModelAndView adicionaUsuario(Usuario usuario, Endereco endereco,HttpServletRequest request) throws Exception{
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String senhaEncode = encoder.encode(usuario.getSenha());
usuario.setSenha(senhaEncode);
usuario.setRoles("ROLE_USUARIO");
Usuario usuarioCadastrado = UsuaDao.addUsuario(usuario);
endereco.setUsuario(usuarioCadastrado);
endDao.addEndereco(endereco);
authenticateUserAndSetSession(usuarioCadastrado, request);
return new ModelAndView("/");
}
Pesquisando sobre como fazer isso cheguei no seguinte código:
private void authenticateUserAndSetSession(Usuario user, HttpServletRequest request) throws Exception {
String username = user.getUsername();
String password = user.getPassword();
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
request.getSession();
token.setDetails(new WebAuthenticationDetails(request));
Authentication authenticate2 = authenticationManager.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authenticate2);
}
Eu entendi parcialmente o que esse código faz, mas mesmo assim não funciona, quando faço um novo cadastro ele cai na pagina de Login padrão do Spring, mas é estranho pois eu deixei todas as paginas liberadas nas configurações.
Se alguém souber algum tutorial ou o porque o código está agindo dessa forma agradeço.
obrigado.