1
resposta

[Sugestão] Invalid credentials

Como resolver "Invalid credentials" na tela de login com Spring Security

Se você está com o problema de "Invalid credentials" mesmo após configurar tudo corretamente, pode ser que a senha armazenada no banco esteja incorreta ou não corresponda ao hash esperado pelo Spring Security.

Segue o passo a passo que usei para corrigir:


Injeção do PasswordEncoder no Service

No seu service, injete o encoder desta forma:

@Autowired
private PasswordEncoder encoder;

Alterações no método loadUserByUsername

Use o seguinte código para validar o encoder e gerar um hash válido para teste:

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    // Mostra qual encoder está sendo usado
    System.out.println("Encoder em uso: " + encoder.getClass().getName());

    // Gera um hash de teste para a senha que deseja usar
    String senhaCriptografada = encoder.encode("Maria123");
    System.out.println("Nova senha cript: " + senhaCriptografada);
    // Atualize essa senha no banco para o usuário correspondente
    // Obs: Toda vez que rodar o projeto, o hash será diferente, mas isso não prejudica

    var user = usuarioRepository.buscarUsuario(username)
            .orElseThrow(() -> new UsernameNotFoundException("O usuário não foi encontrado! " + username));

    System.out.println("Usuário encontrado: " + user.getEmail());
    System.out.println("Senha no banco: " + user.getSenha());
    System.out.println("Senhas iguais?: " + encoder.matches("Maria123", user.getSenha()));

    return user;
}

Teste o login

  • Use o email/nome do usuário cadastrado.
  • Use a senha que você gerou (Maria123 neste exemplo).

Se o log mostrar Senhas iguais?: true, o login deve funcionar normalmente.


Dica: o problema geralmente não está na configuração do Spring Security, mas no hash da senha que está no banco. Sempre gere o hash usando o mesmo PasswordEncoder que você injetou no Service. E também verifique se ele acha o usuário pelo nome.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi, Keven! Como vai?

Agradeço por compartilhar.

Gostei da sua explicação, principalmente por detalhar o uso do PasswordEncoder e mostrar o processo de validação da senha. Isso ajuda bastante quem está com o mesmo erro de Invalid credentials.

Continue compartilhando soluções como essa, pois ajudam muito outros colegas que passam pelas mesmas situações.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!