Comment s'authentifié sous java

Résolu
bonsoir,
s'il vous plait je besoin d'aide
je crée une petite application avec netbeans, dans cette application l'utilisateur devra saisir son login et son password pour accéder à la suite.
mon problème est le suivant :
j'ai créer l'interface de connexion avec netbeans, j'ai aussi créer la base de données mais quand saisie le login et le mot de passe il me renvoi "mot de passe incorrect !" je ne sais pas ce qui ce passe.
svp quelqu'un peut m'aider help

l'image de l'interface


voici mon code :

 String login = JTLogin.getText();
        String mdp = JPMdp.getPassword().toString();
        
        maConnexion.ObtenirConnexion();
        con = maConnexion.ObtenirConnexion();
        
       try
       {
           //création de la requete
           statement = con.prepareStatement("SELECT password FROM users WHERE login ='"+login+"' ");
           resultat = statement.executeQuery();
           
           if(resultat.next())
           {
               String motDePass = resultat.getString(1);
               if(motDePass.equals(mdp))
               {
                   JOptionPane.showMessageDialog(null, "Connexion reussie !", "SUCCESS", JOptionPane.PLAIN_MESSAGE);
                    RessourcesHumaine rh = new RessourcesHumaine();
                    rh.setVisible(true);
           }
           else
           {
               JOptionPane.showMessageDialog(null, "Mot de passe incorect !","Erreur",(1));
           }
           }
           else
           {
               JOptionPane.showMessageDialog(null, "Login incorrect !","Erreur",(1));
           }
            
           //Recuperation de la requete dans la variable
           resultat = statement.executeQuery();
           
          // con.close();
       }
       catch(SQLException e)
               {
                   System.out.println(e.getMessage());
               }

5 réponses

  1. Modérateur
    Bonjour,

    Le problème c'est que
    JPMdp.getPassword().toString()
    ne fait pas ce que tu penses, car getPassword est un tableau ! Affiches
    mdp
    pour voir...

    Tu devrais plutôt faire
    String mdp = new String(JPMdp.getPassword());


    "SELECT password FROM users WHERE login ='"+login+"'"
    Attention, c'est très dangereux ça !
    Étudies ce qu'il se passerait si je mettais ceci comme login :
    '; DROP TABLE users; --


    Pour éviter ce genre de problème il faut faire
    "SELECT password FROM users WHERE login = ?"
    puis
    statement.setString(1, login);
    .

    Remarque : normalement on ne stockes jamais les mots de passes en dur dans une base de données...
    La confiance n'exclut pas le contrôle
    1. sa ne marche toujours pas sa me renvoie toujours "mot de passe incorrect !"
      1. Modérateur
        Pour voir ce qu'il se passe il faudrait savoir quelles sont les deux valeurs qui sont comparées.
        Affiches donc
        mdp
        , récupéré du formulaire, et
        motDePass
        , récupéré de la base de données.
    2. Bonjour excusez moi pour le silence après plusieurs jours de recherche je trouver comment s'authentifier et sa passe bien.
      voici mon code:


      String sql ="SELECT * FROM users WHERE username=? and mdp=?";
      try
      {
      pstmt = con.prepareStatement(sql);
      pstmt.setString(1, jtUser.getText());
      pstmt.setString(2, jtMpd.getText());

      Rs = pstmt.executeQuery();
      if(Rs.next())
      {
      JOptionPane.showMessageDialog(null, "Authentification reussit");
      RessourcesH mdp = new RessourcesH();
      mdp.setVisible(true);
      }
      else
      {
      JOptionPane.showMessageDialog(null, "Authentification échoué");
      }
      1. Bonjour comment vas tu? Tu peux m'envoyer le code complet pour faire la connexion car j'ai le même problème que toi et j'essais ton exemple et sa ne marche pas merci