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

Como chegar a um objeto Usuario a partir de loginForm?

Estou com uma dúvida em relação ao método gerarToken da classe TokenService, mais especificamente na seguinte linha:

        Usuario logado = (Usuario) authentication.getPrincipal();

No método autenticar de AutenticacaoController recebemos como parâmetro um objeto do tipo LoginForm que possui apenas as informações de email e senha. Porém, após ser convertido em um objeto do tipo UsernamePasswordAuthenticationToken e ter um objeto do tipo Authentication gerado e passado como parâmetro para o método tokenService.gerarToken, foi possível recuperar um objeto do tipo Usuario através de uma chamada a authentication.getPrincipal(), onde além de email e senha também possui os atributos de id e nome. Gostaria que fosse explicado com maiores detalhes como o Spring conseguiu buscar o objeto do tipo Usuario.

2 respostas
solução!

Oi Tarcísio,

No método autenticar da classe AutenticacaoController tem essa linha:

authManager.authenticate(dadosLogin);

Quando esse método é chamado o Spring sabe, por conta das configurações na classe SecurityConfigurations, que precisa chamar a classe AutenticacaoService para realizar a consulta do usuário no banco de dados.

Então ele guarda o objeto Usuario devolvido no método loadUserByUsername e o associa com o authentication.getPrincipal().

Bons estudos!

A dúvida foi esclarecida. Muito obrigado!