Solfier
Dezembro 30, 2009, 5:32pm
#1
estou fazendo um sistema de login com hibernate, e estou com problema na verificação do usuario e senha.
o trecho que está com problema é:
public boolean login(String user, String senha) {
Usuario retorno;
String sql = "from Usuario where UserName = :user and Passwd = :senha";
Query query = this.session.createQuery(sql);
query.setString("user", user);
query.setString("senha", senha);
retorno = (Usuario) query.uniqueResult();
if((retorno.getUsername().equals(user)) && (retorno.getPasswd().equals(senha)) && retorno.equals(null))
return true;
else
return false;
}
não sei como tratar caso a consulta não retorne nada… como seria?
inté!
rimarck
Dezembro 30, 2009, 5:50pm
#2
public boolean login(String user, String senha) {
String sql = "from Usuario where UserName = :user and Passwd = :senha";
Query query = this.session.createQuery(sql);
query.setString("user", user);
query.setString("senha", senha);
Object retorno = query.uniqueResult();
if (retorno != null) {
Usuario usuario = (Usuario) retorno;
if(usuario.getUsername().equals(user) && usuario.getPasswd().equals(senha))
return true;
else
return false;
} else
return false;
}
MarSSo
Dezembro 30, 2009, 5:52pm
#3
Colocar um IF a mais para verificar se o retorno é nulo resolve o problema, mas o código ficaria “podre” no que diz respeito a um tratamento específico desse erro. Voce não saberia se o usuário não existe ou se existe e sua senha está incorreta. Mudar o retorno para String e retornar uma mensagem especifica para cada erro ou criar classes Exceptions podem ser opções.
Alberes
Dezembro 30, 2009, 5:52pm
#4
Se a consulta retornar nada é porque o usuário não existe, então o retorno é false.
Não entendi esse trecho de código.
retorno.equals(null)
Para verificar se um objeto é nulo é com operador ==
object == null;
MarSSo
Dezembro 30, 2009, 5:55pm
#5
código “pobre” e não “podre”. Lamento
tambem Sugiro… fazer um tratamento melhor
primeiro verifica se o usuario existe… se existir verifica se a senha bate…