Logica errada na validação de Login?

4 respostas
luis.itprofessional

Boa Noite pessoal...
Bem sou novo aqui e talvez o erro seja até ridículo para vocês, ,mas já vi e revi o código e não estou sabendo o que está acontecendo de errado.

Tenho uma janela de login que chama uma classe service para fazer a validação do login, na classe service chamo o DAO da classe usuario que por sua vez retorna o objeto usuario do banco. A classe service deve retornar a String "valido" se a senha bater com o digitado pelo usuario, porem não importa a senha que coloque que o service retorna como "valido".

Ação do botão na tela de login....
String retorno = new LoginService().isValidLogin(txtLogin.getText(),new String(txtSenha.getPassword()));
					if (retorno.equals("valido"))
					{
						TelaLogin.this.setVisible(false);
						new TelaPrincipal().setVisible(true);
					}
					else{
						JOptionPane.showMessageDialog(null, retorno);
					}

Classe service....

public String isValidLogin(String login, String pSenha){
		Usuario usuario = null; 
		try{
			usuario =  new UsuarioDAO().obterPeloID(login);
		}
		catch(Exception e){
			JOptionPane.showMessageDialog(null, "Erro:"+ e.getMessage());
		}

		if(usuario==null){
			return "Este login não existe no banco!";
		}

		else if(usuario.getSenha().equals(pSenha));
		{
			JOptionPane.showMessageDialog(null, "Senha:"+usuario.getSenha() +"/n"+"Parametro:"+pSenha);
			return "valido";
		}
	}

Obrigado desde já...

4 Respostas

C

Amigo, não sei se estou falando bobeira, mas não é aquele new?

usuario =  new UsuarioDAO().obterPeloID(login);

eu faria somente:

usuario =  UsuarioDAO().obterPeloID(login);

Só testando para ter certeza, estou sem Eclipse agora.
Se não, coloca um break point ali e debugga, veja o valor de usuario antes daquele if que verifica a senha.

luis.itprofessional

É meu amigo, não tem a ver mesmo. O objeto esta sendo retornado certo, eu já fiz o Debug dos valores do login e senha do objeto e do parâmetro senha que passo na função e estão vindo corretos. O que eu quero saber é por que ele cai no return “valido” se a senha do parâmetro esta diferente da do objeto. Isso que eu nao entendo.
Mas obrigado de qualquer forma.

victorsp
else if(usuario.getSenha().equals(pSenha));

Tira o “;” que ele vai limitar o escopo do bloco para o if, do jeito que está o bloco do retorno está sendo sempre executado.

luis.itprofessional

Putz, que mole! Juro que não vi a virgula, olhei milhares de vezes o código e nada. Como ela foi parar ali ? rsrsrs
Brigadão cara!

Criado 22 de junho de 2011
Ultima resposta 23 de jun. de 2011
Respostas 4
Participantes 3