1
resposta

[Dúvida] Implantaçao de Sistema de Autenticação

Resolvi implementar validação de usuário por meio do Banco de Dados em um projeto semelhante ao do curso, mas não tenho ideia de quais os padrões para esse tipo de validação:

  1. Criei uma interface Autenticavel com o método autentica.
  2. Chamei o método na classe AutenticavelDAO, no método login.
    public boolean login(Autenticavel autenticavel) {
         try {
             String sql = "SELECT * FROM USUARIO WHERE USUARIO = ? AND PASSWORD = ?";
             try (PreparedStatement preparedStatement = this.connection.prepareStatement(sql)) {
                 preparedStatement.setString(1, autenticavel.getUser());
                 preparedStatement.setString(2, autenticavel.getPassword());
                 preparedStatement.execute();
                 return autenticavel.autentica(preparedStatement);
             }
         } catch (SQLException e) {
             throw new RuntimeException(e);
         }
     }
    A dúvida seria, como minha query pega do BD apenas o usuário com user e password igual ao que foi digitado, posso fazer o método autentica com essa implementação abaixo:
    @Override
     public boolean autentica(PreparedStatement pstm) {
         try (ResultSet rst = pstm.getResultSet()) {
             return rst.next();
         } catch (SQLException e) {
             throw new RuntimeException(e);
         }
     }
    Nesse caso, eu não percoro o ResultSet, apenas retorno se ele tem próximo nao, já que ele me devolve se existe exatamente o que pedi na query (true) ou não (false)
1 resposta

se observar tem um parametros

preparedStatement.setString(1, autenticavel.getUser()); ** -> USUARIO = ?** preparedStatement.setString(2, autenticavel.getPassword()); PASSWORD = ?

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