Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Persistir Hashcode da Senha

Olá Rodrigo.

Estou refatorando o código, desta vez utilizando o banco de dados PostGreSQL. Nesse caso, para armazenar a senha como um hashcode, usei a seguinte lógica no construtor da classe Usuário:

    public Usuario(String nome, String email, String senha) {
        this.nome = nome;
        this.email = email;
        this.senha = new BCryptPasswordEncoder().encode(senha);
    }

Mas não alterei mais nada em nenhuma outra parte do código.

    @PostMapping
    public ResponseEntity<?> cadastrar(@Valid @RequestBody Usuario usuario) {
        usuarioRepository.save(usuario);
        UsuarioDTO usuarioDTO = new UsuarioDTO(usuario);
        return new ResponseEntity<>(usuarioDTO, HttpStatus.CREATED);
    }

Porém esta lógica não funciona, e a senha armazenada no banco é a mesma que insiro no Postman. Quando chamamos o método cadastrar, passando os campos nome, email, e senha, não é este construtor (com os mesmos 3 argumentos) que é chamado para instanciar a classe?

2 respostas
solução!

Oi Caroline,

Como você está recebendo o objeto usuario diretamente no método do controller, o Spring cria uma instancia utilizando o construtor padrão e preenche os atributos via métodos setters.

Por isso não está chamando seu construtor.

Obrigada, Rodrigo!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software