No nosso caso, definimos que o username é o email.
Mas e se em uma aplicação (como o Twitter) você pode logar via e-mail ou outro campo (vamos chamar de apelido
aqui), como que faria?
Seria desta forma? (Lembrando que eu criaria o método no UsuarioRepository.
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
{
Optional<Usuario> usuario = repository.findByEmailOrApelido(username);
if (usuario.isPresent())
{
return usuario.get();
}
throw new UsernameNotFoundException("Dados inválidos!");
}