1
resposta

Customizar a autenticação no momento do login

Eu estou tentando criar um sistema com atenticação de 2 fatores aonde, na primeira parte, o usuario informa o email. Após isso é criado uma senha aleatoria essa mesma senha é enviada para o usuario através do seu email, após isso, ela é armazenada no banco de forma criptografa utilizando o bcrypt. Para efetuar o login, o usuario informa a senha que recebeu por email. Ao enviar os dados para o login do front para o back, a senha é enviada de forma criptografada. Pelo que eu entendi, quando utilizamos bcrypt, o spring automaticamente faz o encode da senha para ser comparada com a do banco. Eu gostaria de saber se há como desabilitar esse processo de encode, pois ele ja está sendo feito no front.

1 resposta

Olá Tiago, tudo bem?

No caso do Spring, quando utilizamos o bcrypt, ele automaticamente faz o encode da senha para ser comparada com a do banco. Porém, é possível desabilitar esse processo de encode se você já está fazendo isso no front-end.

Uma opção seria utilizar o método matches() do BCryptPasswordEncoder para comparar a senha recebida do front-end com a senha armazenada no banco de forma criptografada. Dessa forma, você pode evitar que o Spring faça o encode novamente.

Segue um exemplo de como utilizar o matches():

BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String senhaCriptografada = // senha armazenada no banco de dados

if (encoder.matches(senhaRecebidaDoFront, senhaCriptografada)) {
    // Senhas correspondem, realizar o login
} else {
    // Senhas não correspondem, tratar o erro
}

Espero ter ajudado e bons estudos!