1
resposta

Como se dá a referência à tabela Usuário?

Bom dia,

Na aula não ficou claro pra mim como o authenticationManager sabe exatamente qual repository e tabela chamar para efetuar a autenticação. Aos 13:50 é possível ver que ele bateu na tabela usuarios. Mas como se deu essa configuração? Visto que em nenhum momento no AutenticacaoController ou no SecurityConfiguration, foi feita uma referencia à classe Usuario ou ao seu repositório.

Outro ponto que não ficou claro pra mim. No metodo findByLogin do UsuarioRepository, por que é retornada uma instância da interface UserDetails ao invés de uma instancia da Classe Usuario?

1 resposta

Bom dia, Ricardo! Como vai?

No Spring Security, o processo de autenticação é bastante configurável e, por padrão, ele utiliza um UserDetailsService para carregar os dados do usuário. A implementação dessa interface é responsável por buscar o usuário no banco de dados.

No seu projeto, essa implementação é feita na classe AutenticacaoService, que implementa a interface UserDetailsService. O método loadUserByUsername dessa classe é chamado pelo Spring Security para buscar o usuário no banco de dados. O UsuarioRepository é utilizado dentro desse método para realizar a consulta à tabela usuarios.

Sobre o método findByLogin do UsuarioRepository retornar uma instância da interface UserDetails ao invés de uma instância da classe Usuario, isso acontece porque o Spring Security trabalha com a interface UserDetails para representar os dados do usuário. A sua classe Usuario implementa essa interface, permitindo que ela seja utilizada diretamente pelo Spring Security durante o processo de autenticação.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.