Spring security

8 respostas
springjava
guilhermebhte

Tenho uma demanda.

Para o usuário alterar sua senha, ele deve confirmar a atual;

Mas não consigo validar a atual, por mais que copio igual

Que está no banco:

$2a$10$sy3zDdLq3E/qhKFt3fPPCu8SWM4I7RxZ3V/DggmIKXl9fnSUh6G66

Quando digito:
$2a$10$KYjgIOwuZ6CPUJsi0u2zhOu0Ws2jeh8.xu9Z6LjqltUQuV9kePOwi

webSecurity

@Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

Quando salvo

usuario.setSenha(passwordEncoder.encode(usuario.getSenha()));

Quando faço a validação

passwordEncoder.encode(senhaAtual) <- essa informação nunca bate com a do banco de dados

if (!passwordEncoder.matches(passwordEncoder.encode(senhaAtual), usuario.get().getSenha())) {

8 Respostas

guilhermebhte

Alguém já passou por isso ?

guilhermebhte

Alguém

BrunoPereira

esse encode serve pra codificar aleatoriamente a senha, certo? se for isso

nesse comando aqui ele ta pegando a senha e criando uma nova codificação, acho que por isso as senhas não condizem.

obs: sou novo nesse assunto de security então se estiver errado desculpa xD

guilhermebhte

Isso Bruno, pelo que entendi.

Mas como faço para ele pegar a senha que o usuário digitou e validar com a senha que está no banco de dados, criptografada ?

javaflex
PedreiroDeSoftware

É assim, mesmo.
Se você codificar a mesma senha ele gera codificações diferentes.
Normal.

A forma de validação é usando o ckeckpw:

BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(16);
        String result = passwordEncoder.encode("#0xCUSTOM");       
        System.out.println(result +" "+ BCrypt.checkpw("#0xCUSTOM","$2a$16$HJQtzh/jLRuXXmAcdRtq6u4N0ptH5Ho1XGvjtwiuOLqwKr83bg8EC"));
guilhermebhte

Não consegui validar esse procedimento, mas valeu.

guilhermebhte

Consegui validar a senha com este procedimento.

Antes de finalizar este tópico, vou fazer mais testes.

Criado 17 de janeiro de 2020
Ultima resposta 6 de fev. de 2020
Respostas 8
Participantes 4