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

[Dúvida] Problema no login do usuário fulano

Boa tarde. Prezados. Acertei o banco mysql para minha aplicação. Ela inicia normalmente. Mas ao testar Selenium dá erro no login, a senha não bate. A senha cifrada que dá insert não tá funcionando. Ao descomentar o @RequestMapping("/usuarios") de UsuarioController para cadastrar o usuário pelo app e ter a senha funcional ele redireciona para /login. usando url /usuarios/new tmb. Gostaria de uma dica para não ter de ficar fuçando código e gastando muito tempo com isto. Poderiam ajudar a dar uma solução, pois o BCrypt não tem como cifrar direto pelo banco senão gerando pela app. Att,

2 respostas

Olá, Bernardo. Tudo bem?

O problema que você está enfrentando parece estar relacionado à forma como as senhas estão sendo geradas e armazenadas no banco de dados. O BCrypt é uma ótima escolha para hashing de senhas, mas ele deve ser usado corretamente para garantir que as senhas sejam validadas corretamente.

Aqui estão algumas dicas que podem ajudar:

  1. Verifique o Processo de Hashing: Garanta que as senhas estão sendo cifradas usando o BCrypt antes de serem inseridas no banco de dados. Isso deve ser feito no lado da aplicação, não diretamente no banco de dados. Por exemplo, ao criar ou atualizar um usuário, use algo como:

    String hashedPassword = BCrypt.hashpw(plainPassword, BCrypt.gensalt());
    
  2. Validação de Senha: Quando um usuário tenta fazer login, você deve comparar a senha fornecida com a senha armazenada no banco de dados usando o BCrypt. Use o método BCrypt.checkpw para isso:

    boolean isPasswordMatch = BCrypt.checkpw(enteredPassword, storedHashedPassword);
    
  3. Cadastro de Usuário: Se você está tendo problemas com o redirecionamento ao tentar cadastrar usuários, verifique as configurações do seu UsuarioController. Assegure-se de que o mapeamento de URLs e os métodos de controle estão configurados corretamente para lidar com as requisições de criação de usuário.

  4. Teste com Dados Conhecidos: Tente criar um usuário com uma senha conhecida através da aplicação e verifique se o login funciona. Isso pode ajudar a identificar se o problema está na inserção ou na validação da senha.

Espero que essas dicas ajudem a resolver o problema com o login. Qualquer dúvida estou à disposição.

Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!
solução!

Oi Renan, td joia? Consegui resolver utilizando o BCrypt que está no projeto. (PasswordEncoder) Eu implementei o método abaixo para processar o login e comparar as senhas de forma correta. Pois o form html de login tava apontando para método post sem o ter no controller. Assim passou a funcionar o login e consequentementes os testes Selenium e Cucumber. O projeto veio com falhas de compilação e montagem do ambiente de produção tmb, talvez faltou explicação do pessoal do curso. De qualquer forma agradeço sua contribuição e disponibilidade. Att,

@Autowired
PasswordEncoder encoder;

// Processa o formulário de login (POST)
@PostMapping("/login")
public String processLogin(@RequestParam String username, @RequestParam String password) {
    
    Usuario user = usuarioRepos.getUserByUsername(username);
    String senhaArmazenada = user.getSenha();

    if(encoder.matches(password, senhaArmazenada)){
        // Se for bem-sucedido, redireciona para a página principal
        return "redirect:/leiloes";
    }
    return "redirect:/login";//mal-sucedido retorna ao login
}