Bom eu estou criptografando minha senha e login ao criar o usuario;
public boolean cadastrar(Usuario u, Matricula m) throws SQLException {
String geradoLogin = BCrypt.gensalt();
String geradoSenha = BCrypt.gensalt();
String senhaCrypt = BCrypt.hashpw(u.getSenha(), geradoSenha);
String loginCrypt = BCrypt.hashpw(u.getLogin(), geradoLogin);
u.setLogin(loginCrypt);
u.setSenha(senhaCrypt);
PreparedStatement matricula = con.prepareStatement("INSERT INTO MATRICULA(numero_matricula, numero_computador) VALUES(?, ?)",PreparedStatement.RETURN_GENERATED_KEYS);
matricula.setInt(1, m.getNumero_matricula());
matricula.setInt(2, m.getNumero_computador());
try {
con.setAutoCommit(false);
matricula.executeUpdate();
ResultSet rs = matricula.getGeneratedKeys();
rs.next();
Long idGerado = rs.getLong(1);
Sessao.getInstancia().getMatricula().setId_matricula(idGerado);
String cadastrarx = "INSERT INTO USUARIO(idpermissao,idmatricula, login, senha, nome,online) VALUES("+u.isAdm()+","+idGerado+",?,?,?,0)";
PreparedStatement cadastrar = con.prepareStatement(cadastrarx);
cadastrar.setString(1, u.getLogin());
cadastrar.setString(2,u.getSenha());
cadastrar.setString(3,u.getNome());
cadastrar.executeUpdate();
con.commit();
}catch(Exception e){
Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, e);
con.rollback();
return false;
}
return true;
}
minha dúvida está em como eu conseguiria fazer a validação quando está sendo feito o login?
public boolean validarSenha(Usuario u) {
String sql = "SELECT * FROM usuario where login = ? and senha = ?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, u.getLogin());
stmt.setString(2, u.getSenha());
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
Usuario usuarioLogado = new Usuario(rs.getLong("id_usuario"), rs.getInt("idpermissao"), rs.getString("login"), rs.getString("senha"), rs.getString("nome"), rs.getBoolean("online"));
Matricula matricula = new Matricula(rs.getLong("idmatricula"));
aSessao.getInstancia().setUsuario(usuarioLogado);
aSessao.getInstancia().setMatricula(matricula);
setOnline();
stmt.close();
rs.close();
return true;
}else{
stmt.close();
rs.close();
return false;
}
} catch (SQLException ex) {
Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
eu criei um metodo para descriptografar
mas ele só serviria para o usuario logado
como conseguir um metodo padrão para utilizar em todos os casos?