Validar login e senha netbeans

18/12/2011

0

Como devo fazer um codigo para validar login e senha no netbeans/java? Estou usando o banco de dados mysql: database = corporativo; table = cadastro_usuario colunas = login e senha! variavel JtextField de login = txtlogin varialvel jPasswordField1 = txtsenha Se validado pelo banco então o sistema abre um novo menu, caso contrario rotorna as mensagem de erro se: usuario errado; Usuario incorreto tente novamente!; senha errada; Senha incorreta tente novamente!. private void botaookActionPerformed(java.awt.event.ActionEvent evt) { ???????????? }
Jose Nunes

Jose Nunes

Responder

Posts

26/12/2011

Jose Nunes

Fala jovem blz!? Mostre-nos um pouco do que vc ja fez para termos uma idéia!! Mas para ir quebrando o galho tem este link: [url]http://javafree.uol.com.br/topic-879383-validar-login-e-senha-digitados-no-jtextfield.html[/url]
Responder

26/12/2011

Jose Nunes

Beleza, Segue anexo o que consegui fazer.
Responder

26/12/2011

Jose Nunes

Jovem... não entendi muito bem onde vc esta fazendo a comparação do que o usuario digitou com o que vc tem em seu banco de dados...
if (txtlogin.getText().equals("login")&& new String(txtsenha.getPassword()).equals("senha"))

É no codigo acima??? Vc esta comparando o txtLogin (o que o usuario digitou) com a palavra "login" e a senha (o que o usuario digitou) com a palavra "senha"?? Vc possui em seu banco de dados um usuario com o nome usuario e este possui a senha que é senha? Fiquei meio na duvida quanto a isso... rss Mas vamos lah!! Faz o seguinte, primeiro: - Na sua classe CONEXAO vc tem o metodo CONSULTAR... correto!? Então... este metodo tem que te retornar alguma coisa, retornar o nome do usuario, a senha ou algo que possa te falar se o usuario existe ou nao... Ele esta como void.. faz mais ou menos assim:
public boolean consultar (String login, String senha){
// Manda como parametro para ele duas variaveis para ele procurar no banco de dados!

            boolean autenticado = false;
            String sql;
            sql = "select login, senha from NOME_DA_SUA_TABELA where login = ? and senha = ?";
            PreparedStatement ps;

            ps = conexao.prepareStatement(sql);
            ps.setString(1, login);
            ps.setString(2, senha);

            ResultSet rs;
            rs = ps.executeQuery();

            if (rs.next()) {
                String loginBanco = rs.getString("NOME_DA_COLUNA_QUE_TEM_O_LOGIN");
                String senhaBanco = rs.getString("NOME_DA_COLUNA_QUE_TEM_A_SENHA");
            autentificado = true;
            }

            ps.close();
  

            return autenticado;

        } catch (SQLException ex) {
            System.out.println("Erro ao recuperar cliente/ senha.);
            Logger.getLogger(CartaoDAO.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException();
        }
}

Depois de vc ter feito isso... aii vc irá comparar a resposta... ou seja vc vai comparar se a resposta do consultar é TRUE ou FALSE... se for true vc fala que o usuario esta logado:

String login = txtLogin.getText();
String senha = txtSenha.getPassword();

boolean resposta = conexao.consultar (login, senha);

if (resposta == true){
 JOptionPane.showMessageDialog(rootPane, "login realizado com sucesso!");

}else {
 JOptionPane.showMessageDialog(rootPane, "login não realizado!\n Favor conferir o usuario e senha digitado!");
}

Algumas observações: Comandos para Banco de Dados => De uma lida nos tutoriais do Fórum... para vc entender melhor como fazer um select, insert entre outras coisas importantes.. Use o PreparedStatement => Ele permite vc colocar caracteres curingas.. (no exemplo acima foi a '?') pra não ficar concatenando String... fazer com PreparedStatement é bem mais seguro! Use a função toUpperCase() se necessario => Esta função ira transformar td o que vc digitou para maiusculo!! Assim no seu banco de dados no campo login nao tera divergencias por exemplo de: JOSE, Jose, jose, etc... Ou seja... no seu banco de dados estará sempre JOSE (todas as letras maiusculas).. mas faça isso somente se vc quiser tratar esta situação... pois existem sofwares em que o login com a letra minuscula é importante... aii vc vê se esta função pode te ajudar. No exemplo que fiz nem coloquei esta função... mas é importante lembrar a utilização da mesma! Eu nao testei o codigo.. rss... É so para vc tirar uma ideia!! Qualquer coisa vc posta aii ok?!! Abraços...
Responder

29/12/2011

Jose Nunes

Estou comparando o que o usuario digitou no txtlogin e no txtsenha com o que esta no banco de dados nos compos login e senha respectivamente. [quote="altagnam"]Jovem... não entendi muito bem onde vc esta fazendo a comparação do que o usuario digitou com o que vc tem em seu banco de dados...
if (txtlogin.getText().equals("login")&& new String(txtsenha.getPassword()).equals("senha"))

É no codigo acima??? Vc esta comparando o txtLogin (o que o usuario digitou) com a palavra "login" e a senha (o que o usuario digitou) com a palavra "senha"?? Vc possui em seu banco de dados um usuario com o nome usuario e este possui a senha que é senha? Fiquei meio na duvida quanto a isso... rss Mas vamos lah!! Faz o seguinte, primeiro: - Na sua classe CONEXAO vc tem o metodo CONSULTAR... correto!? Então... este metodo tem que te retornar alguma coisa, retornar o nome do usuario, a senha ou algo que possa te falar se o usuario existe ou nao... Ele esta como void.. faz mais ou menos assim:
public boolean consultar (String login, String senha){
// Manda como parametro para ele duas variaveis para ele procurar no banco de dados!

            boolean autenticado = false;
            String sql;
            sql = "select login, senha from NOME_DA_SUA_TABELA where login = ? and senha = ?";
            PreparedStatement ps;

            ps = conexao.prepareStatement(sql);
            ps.setString(1, login);
            ps.setString(2, senha);

            ResultSet rs;
            rs = ps.executeQuery();

            if (rs.next()) {
                String loginBanco = rs.getString("NOME_DA_COLUNA_QUE_TEM_O_LOGIN");
                String senhaBanco = rs.getString("NOME_DA_COLUNA_QUE_TEM_A_SENHA");
                autenticado = true;
            }

            ps.close();
  

            return autenticado;

        } catch (SQLException ex) {
            System.out.println("Erro ao recuperar cliente/ senha.);
            Logger.getLogger(CartaoDAO.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException();
        }
}

Depois de vc ter feito isso... aii vc irá comparar a resposta... ou seja vc vai comparar se a resposta do consultar é TRUE ou FALSE... se for true vc fala que o usuario esta logado:

String login = txtLogin.getText();
String senha = txtSenha.getPassword();

boolean resposta = conexao.consultar (login, senha);

if (resposta == true){
 JOptionPane.showMessageDialog(rootPane, "login realizado com sucesso!");

}else {
 JOptionPane.showMessageDialog(rootPane, "login não realizado!\n Favor conferir o usuario e senha digitado!");
}

Algumas observações: Comandos para Banco de Dados => De uma lida nos tutoriais do Fórum... para vc entender melhor como fazer um select, insert entre outras coisas importantes.. Use o PreparedStatement => Ele permite vc colocar caracteres curingas.. (no exemplo acima foi a '?') pra não ficar concatenando String... fazer com PreparedStatement é bem mais seguro! Use a função toUpperCase() se necessario => Esta função ira transformar td o que vc digitou para maiusculo!! Assim no seu banco de dados no campo login nao tera divergencias por exemplo de: JOSE, Jose, jose, etc... Ou seja... no seu banco de dados estará sempre JOSE (todas as letras maiusculas).. mas faça isso somente se vc quiser tratar esta situação... pois existem sofwares em que o login com a letra minuscula é importante... aii vc vê se esta função pode te ajudar. No exemplo que fiz nem coloquei esta função... mas é importante lembrar a utilização da mesma! Eu nao testei o codigo.. rss... É so para vc tirar uma ideia!! Qualquer coisa vc posta aii ok?!! Abraços...
Responder

30/12/2011

Jose Nunes

Humnn... se vc esta fazendo esta comparação desta forma:
if (txtlogin.getText().equals("login")&& new String(txtsenha.getPassword()).equals("senha")) 
acho q não dará certo... no codigo acima vc esta comparando o que o usuario digitou com a palavra login e a senha com a palavra senha... Se vc tiver pegado a senha e o login deste usuario a atribuido as variaveis login e senha, o certo é vc tirar as "" (aspas)... assim a variavel login tera o valor que vc buscou no banco de dados e a variavel senha tera outro valor que vc tb teria buscado no banco de dados... ficando assim:
if (txtlogin.getText().equals(login)&& new String(txtsenha.getPassword()).equals(senha))
Creio que desta forma não dará mt certo tb não viu... por exemplo eu sou o usuario e digito lah na sua tela no campo login o meu nome Altagnam... como vc vai comparar o meu login e a minha senha, sendo que vc ainda não atribui nenhum valor para as variaveis login e senha? Tava olhando o seu codigo e a parte do login esta assim: OBS: Não achei o lugar que vc pega a senha e usuario no banco de dados
private void botaologarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaologarActionPerformed
    /*if (txtlogin.getText().equals("") || txtsenha.getText().equals(""));
    JOptionPane.showInternalMessageDialog
(null, "Os campos não podem ser nulos!");*/
    
    int resp = JOptionPane.showConfirmDialog(rootPane, "Deseja autenticar este login e senha?", 
"Atencão", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
            String sql = "";

            if (resp == 0) {
        if (txtlogin.getText().equals("login")&& new String(txtsenha.getPassword()).equals("senha")) {

            sql = " select from cadastro_usuario where login = " + txtlogin.getText();
            conexao.consultar(sql);
            
            sql = " select from cadastro_usuario where senha = " + txtsenha.getText();
            conexao.consultar(sql);

            JOptionPane.showMessageDialog(rootPane, "login realizado com sucesso!");
        } else {
            JOptionPane.showMessageDialog(rootPane, "Erro no login: verifique!");
        }

            } else if (resp == 2) {
                JOptionPane.showMessageDialog(rootPane, "Operação cancelada!");
            }  
Tenta mais ou menos assim:
private void botaologarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaologarActionPerformed
    /*if (txtlogin.getText().equals("") || txtsenha.getText().equals(""));
    JOptionPane.showInternalMessageDialog
(null, "Os campos não podem ser nulos!");*/
    
    int resp = JOptionPane.showConfirmDialog(rootPane, "Deseja autenticar este login e senha?", "Atencão", 

JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
            String sql = "";

            if (resp == 0) {

            sql = " select from cadastro_usuario where login = " + txtlogin.getText();
            String login = conexao.consultar(sql, login);
// Aqui vc estará atribuindo um valor a variavel login

// O seu metodo consultar terá que retornar uma String com o nome do usuario no banco de dados... 
// Se retornar null é porque o usuario digitado não existe.. estou passando para o metodo consultar dois parametros.. 
// O primeiro foi vc q escreveu que é a sua sql.. 
// O outro é o que ele deve procurar no banco de dados, ou seja, verificar se o login que o usuario digitou existe.
            
//Se o login que usuario digitou esta no banco vamos fazer a busca da senha
if (login.equals (txtlogin.getText ()){

            sql = " select from cadastro_usuario where senha = " + txtsenha.getText();
            String senha = conexao.consultar(sql, senha);
// Fazendo a mesma coisa de cima... 
// Passando a SQL e o usuario para o metodo consultaro me retornar a senha do usuario solicitado

if (senha.equals (txtsennha.getText())) {
            JOptionPane.showMessageDialog(rootPane, "login realizado com sucesso!");
}
else {

            JOptionPane.showMessageDialog(rootPane, "login não realizado Favor conferir a senha digitada!");
}

}

}        

            } else if (resp == 2) {
                JOptionPane.showMessageDialog(rootPane, "Operação cancelada!");
            }  
Mas de qualquer forma... da sua maneira o codigo ficaria ruimm.. pois vc teria que fazer duas consultadas no banco de dados.. uma para pegar o login: O login estando certo.. vc pegaria a senha... Na resposta anterior (não fiz o teste mas acho que funciona), vc faria somente uma consulta.. se o usuario e senha estiverem corretos... o metodo te retorna uma variavel booleana com o valor true.. com isso vc faz a comparação e ve se usuario esta correto... Ahh uma coisa importante... creio que fazendo da sua forma.. o seu software estará um pouco frágil.. visto que vc vai ter que retornar a senha correta do usuario para fazer a comparação com o que ele digitou.. entao.. pode haver alguma meneira de manipular esses dados e burlar essa parte do login.. Caso vc nao tenha entendido o meu raciocinio ou até mesmo ao contrario.. eu não tenha entendi o seu... favor avisar! Abraços...
Responder

15/03/2012

Yuri Yamamoto

altagnam sou novato em java e queria sua ajuda, preciso fazer uma tela de login, peguei o código acima q tem o metodo consultar e tals e modifiquei para tentar usar, e ele não esta rodando da como pointernull o erro, e outra duvida é oq seria o loginBanco e senhaBanco? (seria o login e a senha q uso para abrir o banco? pq aki tenho uma classe de conexao que faz a conexao com o banco ja)
Responder

15/03/2012

Yuri Yamamoto

E ai jovem blz!? Tava olhando o que eu escrevi e vi que nesta linha
if (login.equals (txtlogin.getText ()){  
pode ocorrer o erro de NullPointerException... pois se o usuario não existir a variavel estará com null.. aii eu nao consigo comparar o retorno do metodo de comparação com o que o usuario digitou.. seria mais ou menos, tentar procurar uma palavra em algo que não existe, esta nula... Pelo o que vc escreveu o erro deve estar ai... faz o seguinte... antes desta linha coloca um
System.out.printl(variavel_de_retorno_do_metodo_consulta)
aii vai ser impresso no console a variavel que esta retornando... se esta vindo preenchida ou nula... Mas de qualquer forma, vamos alterar o codigo...
if (login == (txtlogin.getText ()){  
// Agora acho q não deve dar o erro (não testei o codigo)
}
Mas aqui.. como vc esta fazendo? Ta seguindo o modelo que eu passei lah em cima... ou ta tentando fazer igual o rapaz que postou a duvida? Tenta aii e me fala.. qualquer coisa.. coloca o seu codigo aii pra gente da uma olhada...
Responder

29/03/2012

Yuri Yamamoto

Galera, vo aproveitar esse tópico aqui, se julgar necessário abrir outro pra tentar ajudar mais alguém agente faz isso certo? é que não achei ainda essa minha dúvida tão boba... vai vendo: to usando JSF e Hibernate pra desenvolver uma aplicação, onde por enquanto to fazendo a tela de login que segue abaixo:
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	template="/arquivos/administrarTemplate.xhtml">
	<ui:define name="conteudo">
		<h:form	rendered="#{!loginAdministradorManagedBean.loginAdministrador.validate}">
			<h:panelGrid columns="2">
				<h:outputLabel value="Login:" for="login" />
				<h:inputText name="login" id="login" />
				<h:outputLabel value="Senha:" for="senha" />
				<h:inputSecret name="senha" id="senha" />
				<h:commandButton value="Entrar"
					action="#{loginAdministradorManagedBean.fazerLogin}" />
			</h:panelGrid>
		</h:form>
	</ui:define>
</ui:composition>
Bom acontece que quando eu submeto esse formulário, o managedBean não recebe nenhum valor, segue o ManagedBean, nele eu mando imprimir o valor de login no método fazerLogin, não preciso ainda me preocupar com DAO, Hibernate, etc... preciso apenas que este valor chegue preenchido no método citado: segue ManagedBean:

@ManagedBean
@SessionScoped
public class LoginAdministradorManagedBean {
	private String login, senha;
	private LoginAdministrador loginAdministrador = new LoginAdministrador();
//aqui eu tenho os Getters e Setters
	public String fazerLogin() {
		System.out.println(login); //aqui chega null
                System.out.println(senha); //aqui chega null
		if (loginAdministrador.fazerLogin(getLogin(), getSenha())) {// e aqui a comparação, logicamente vai retornar false.
			FacesContext fc = FacesContext.getCurrentInstance();
			HttpSession session = (HttpSession) fc.getExternalContext()
					.getSession(false);
			session.setAttribute("administrador", loginAdministrador.getAdministrador());
			return "/sucesso.xhtml";
		} else {
			return "/falha.xhtml";
		}
	}

}
Sou novo em programação em geral, mas to quebrando a cabeça, desde já obrigado!
Responder

29/03/2012

Yuri Yamamoto

Nossaaaaa velho! Depois de passar um dia inteiro procurando resolver essa "bagaça", fui tomar um café e pensei em fazer um teste tipo "olá mundo" da vida ae, daí foi que percebi que na linha:
<h:inputText name="login" id="login" />
o certo seria:
<h:inputText name="login" id="login" value="#{loginAdministradorManagedBean.login}"/>
E aí, faz um novo tópico? Eu ainda não tinha achado nada que indicasse essa bobagem(falta de atenção)
Responder

29/03/2012

Yuri Yamamoto

Blz cara!! É errando que a gente aprende!! O que importa que vc conseguiu resolver o seu problema.. creio que não seja necesário abrir um novo tópico para essa situação.. Abraços...
Responder

03/06/2013

Elisio Chinhama

[quote="altagnam"]Jovem... não entendi muito bem onde vc esta fazendo a comparação do que o usuario digitou com o que vc tem em seu banco de dados...
if (txtlogin.getText().equals("login")&& new String(txtsenha.getPassword()).equals("senha"))

É no codigo acima??? Vc esta comparando o txtLogin (o que o usuario digitou) com a palavra "login" e a senha (o que o usuario digitou) com a palavra "senha"?? Vc possui em seu banco de dados um usuario com o nome usuario e este possui a senha que é senha? Fiquei meio na duvida quanto a isso... rss Mas vamos lah!! Faz o seguinte, primeiro: - Na sua classe CONEXAO vc tem o metodo CONSULTAR... correto!? Então... este metodo tem que te retornar alguma coisa, retornar o nome do usuario, a senha ou algo que possa te falar se o usuario existe ou nao... Ele esta como void.. faz mais ou menos assim:
public boolean consultar (String login, String senha){
// Manda como parametro para ele duas variaveis para ele procurar no banco de dados!

            boolean autenticado = false;
            String sql;
            sql = "select login, senha from NOME_DA_SUA_TABELA where login = ? and senha = ?";
            PreparedStatement ps;

            ps = conexao.prepareStatement(sql);
            ps.setString(1, login);
            ps.setString(2, senha);

            ResultSet rs;
            rs = ps.executeQuery();

            if (rs.next()) {
                String loginBanco = rs.getString("NOME_DA_COLUNA_QUE_TEM_O_LOGIN");
                String senhaBanco = rs.getString("NOME_DA_COLUNA_QUE_TEM_A_SENHA");
            autentificado = true;
            }

            ps.close();
  

            return autenticado;

        } catch (SQLException ex) {
            System.out.println("Erro ao recuperar cliente/ senha.);
            Logger.getLogger(CartaoDAO.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException();
        }
}

Depois de vc ter feito isso... aii vc irá comparar a resposta... ou seja vc vai comparar se a resposta do consultar é TRUE ou FALSE... se for true vc fala que o usuario esta logado:

String login = txtLogin.getText();
String senha = txtSenha.getPassword();

boolean resposta = conexao.consultar (login, senha);

if (resposta == true){
 JOptionPane.showMessageDialog(rootPane, "login realizado com sucesso!");

}else {
 JOptionPane.showMessageDialog(rootPane, "login não realizado!\n Favor conferir o usuario e senha digitado!");
}

Algumas observações: Comandos para Banco de Dados => De uma lida nos tutoriais do Fórum... para vc entender melhor como fazer um select, insert entre outras coisas importantes.. Use o PreparedStatement => Ele permite vc colocar caracteres curingas.. (no exemplo acima foi a '?') pra não ficar concatenando String... fazer com PreparedStatement é bem mais seguro! Use a função toUpperCase() se necessario => Esta função ira transformar td o que vc digitou para maiusculo!! Assim no seu banco de dados no campo login nao tera divergencias por exemplo de: JOSE, Jose, jose, etc... Ou seja... no seu banco de dados estará sempre JOSE (todas as letras maiusculas).. mas faça isso somente se vc quiser tratar esta situação... pois existem sofwares em que o login com a letra minuscula é importante... aii vc vê se esta função pode te ajudar. No exemplo que fiz nem coloquei esta função... mas é importante lembrar a utilização da mesma! Eu nao testei o codigo.. rss... É so para vc tirar uma ideia!! Qualquer coisa vc posta aii ok?!! Abraços...
ESTOU SEGUINDO ESTE TUTORIAL ME PERDI O PASSO ONDE FAÇO ESTA COMPRARÇÃO :
String login = txtLogin.getText(); String senha = txtSenha.getPassword(); boolean resposta = conexao.consultar (login, senha); if (resposta == true){ JOptionPane.showMessageDialog(rootPane, "login realizado com sucesso!"); }else { JOptionPane.showMessageDialog(rootPane, "login não realizado!\n Favor conferir o usuario e senha digitado!"); }
Responder

03/06/2013

Elisio Chinhama

Opa... baum!? O que acontece é o seguinte: Ele pega o retorno (um booleano) e verifica se a resposta é TRUE... ou seja, vai no banco de dados e compara a senha e o login que o usuário digitou (método consultar).. se a resposta for TRUE o usuário esta autenticado, se retornar FALSE, o usuário digitou o login e/ou senha inválidas...

boolean resposta = conexao.consultar (login, senha);

if (resposta == true){
JOptionPane.showMessageDialog(rootPane, "login realizado com sucesso!");

}else {
JOptionPane.showMessageDialog(rootPane, "login não realizado!\n Favor conferir o usuario e senha digitado!");
}



Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar