Login e Senha

2 respostas
F

Galera boa noite,

Na tela de login estou tentando fazer uma validação mas esta dando erros.

o que eu fiz foi o seguinte. caso o usuario esteja com status ativo ele loga se tiver inativo não loga.

porém eu estou tentando fazer algo a mais que é 3 tentativas de logar caso não consiga bloqueia o usuário que no caso fica inativo. meu código esta assim

public void AcessarConta(){
	
	ControlarDados dados = new ControlarDados();
	
	try {
		
	// Envia os dados para o método Logar na class CadastroDAO
			
		AcessoDAO acesso = new AcessoDAO();
		
		dados.setLogin(txtLogin.getText());
		dados.setSenha(txtSenha.getText());

	// Verifica se um dos campos está vazios
		if(txtLogin.getText().isEmpty() || txtSenha.getText().isEmpty()){
		
		JOptionPane.showMessageDialog(this, "Por Favor, Os Campos Não Podem Ser Nulos!", "AVISO", JOptionPane.CANCEL_OPTION);
		txtLogin.requestFocus();
		
		}

	// Caso toda operação estiver correta entra no modo avaliação
		else {

		// Se login senha no banco ele entra em outra validação.	
		// Se no banco o status estiver 1 ou seja ativo ele acessa a tela principal.
		if(acesso.Logar(dados)){
			
			
			if(dados.getSituacaoProfessor().equals("1")){
								
				// data do sistema.
				Date hoje = new Date();
				SimpleDateFormat data;
				data = new SimpleDateFormat("dd/MM/yyyy");
				
				// abertura da tela principal.
				new TelaPrincipal().setVisible(true);
				// Apresentação do usuário e data do sistema.
				TelaPrincipal.Receber("OLÁ " + dados.getNomeProfessor(), "Data: " + data.format(hoje));					
				
				dispose();
				
			}
		}
		// caso o usuário erre a senha 3 vezes o status de acesso é desativado	
		else if(dados.getContador().equals("0")){
			
			InetAddress addres = InetAddress.getLocalHost();
			dados.setSituacaoProfessor("0");
			
			// Indentificação da maquina
			dados.setHostName(addres.getHostName());
			// ip do cliente
			dados.setIp(addres.getHostAddress());
			
			acesso.Bloquear(dados);
			JOptionPane.showMessageDialog(this, "Usuário " + dados.getLogin() + " Bloqueado\nEntre em contato com o administrador do sistema" 
					, "AVISO" , JOptionPane.ERROR_MESSAGE);
			
			txtLogin.setEditable(false);
			txtSenha.setEditable(false);
		}
		
		 // Se Caso ao contrario apresenta a mensagem de erro.
		else{
			 
			JOptionPane.showMessageDialog(this, "Login ou Senha Invalida, Você Tem Mais " + quantidade + " Tentativas" ,
					"AVISO" , JOptionPane.ERROR_MESSAGE);
			quantidade--;
			dados.setContador(Integer.toString(quantidade));
			acesso.contagem(dados);
			  
			txtLogin.setText(null);
			txtSenha.setText(null);
			txtLogin.requestFocus();
	
		}
}
	} catch (Exception e) {
	/*
	 *"Erro Ao Logar no Sitema\nPor Favor Entre Em Contado Com"
				+ " o Administrador do Sistema"
	 */
		JOptionPane.showMessageDialog(null, e , "AVISO", JOptionPane.INFORMATION_MESSAGE);	
		
	}

o erro que esta dando é java.lang.NullPointerException. tem muito if e else.

Porém outro erro que estava dando é, se o usuário digitar o e-mail dele exemplo, [email removido] 2 vezes e depois digitar [email removido] o sistema bloqueia o rafael. queria que fizesse contagem de um usuario só alguém me ajuda???

2 Respostas

danielbussade

Ola,

O seu código realmente está muito confuso. O que é e classe ControlarDados? Acho que falta você pensar de maneira mais orientada a objetos.

Por exemplo, pq você nao cria um classe Usuario que tenha login e senha e depois faça algo assim:

//após validar se está vazio

Usuario usuario = acessoDao.existeUsuario(usuario);

if usuario == null {
  //nega o acesso
}else{
  if usuario.isAtivo() // verifica se o usuário está ativo ou nao e se nao estiver você pode gravar o numero de tentativas de login que ele errou e incluir o que vc ja estava fazendo
}

}

Evite usar codigo como:
dados.getSituacaoProfessor().equals("1")

Crie um método para isso na classe que contem os dados. Por exemplo se você tem uma classe Professor entao faça um método assim:

if professor.estaInativo(){
}

e na classe Professor teria o seguinte:

public class Professor {
private String status;
public boolean estaInativo(){
 return status.equals("0");
}
}

Espero ter ajudado.

F

Opá obrigado amigo, vou tentar fazer aqui. Realmente ta confuso kkkkk.

ControlarDados seria a class BEAN

Criado 3 de outubro de 2016
Ultima resposta 4 de out. de 2016
Respostas 2
Participantes 2