IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

probléme d'authentification utilisateur [Débutant]


Sujet :

C#

  1. #1
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut probléme d'authentification utilisateur
    bonjour mes amis

    je suis en train de développer une petite application en C#. donc j'ai réalisé l'interface authentification de mon application en utilisation le ADO.NET (selon les besoins fonctionnels). alors le probléme que j'ai lorsqu'un utilisateur saisie leur login et password toujours il affiche "MessageBox.Show("votre password ou login est incorrecte")" j'en sais pas pourquoi il se bloque merci de m'aider a résoudre cet erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
     private void button1_Click(object sender, EventArgs e)
            {
                 cn.Open();
     
                 cmd = new SqlCommand("select compte,login,password from utilisateur", cn);
                SqlDataReader dr = cmd.ExecuteReader();
                dr.Read();
     
     
                if(a1.Text==string.Empty || a2.Text==string.Empty){
                    MessageBox.Show("il faut remplir tous les champs");
                }
                else if (a1.Text.Equals(dr["login"].ToString()) && a2.Text.Equals(dr["password"].ToString()))
                {
     
                    if (dr["compte"].ToString() == "admin")
                        {
                            acceuil acc = new acceuil();
                            acc.Show();
                            this.Hide();
                        }
     
                    dr.Close();
     
                }else{ 
     
                    MessageBox.Show("votre password ou login est incorrecte");
                }
     
                cn.Close();
            }

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonsoir Syrine

    J'ai testé ton code sur ma machine avec un accès à la base en IDbConnection , pour le reste il s'agit de la même chose , et cela fonctionne parfaitement.
    Si il s'affiche pour toi la MessageBox("votre password ou login est incorrecte") c'est qu'il ne rentre pas dans la boucle précédente (le else if ) .

    Je te conseille de placer ton login et ton password en variable temporaire pour vérifier si les informations sont bien exactes comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     string login = dr["login"].ToString();
    string password = dr["password"].ToString();
    Ainsi avec l'aide du débogueur, tu devrais trouver où ça cloche. Il s'agit sans doute du résultat renvoyé par la requête.

    Cordialement
    throw new NoSignatureException();

  3. #3
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Bonjour bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cmd = new SqlCommand("select compte,login,password from utilisateur", cn);
                SqlDataReader dr = cmd.ExecuteReader();
                dr.Read();
    Si je ne me trompe pas, dr.Read() se place sur le premier enregistrement qu'il trouve (il faut donc boucler sur Read() pour parcourir tous les enregistrements). Etant donné que tu ne fais aucun filtre dans ta requête, on peut supposer que tu récupères tous les identifiants de la table utilisateur. Ainsi, ton test ne porte que sur le premier enregistrement trouvé...


    Je verrais plus quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    private void button1_Click(object sender, EventArgs e)
    {
     
    	if(a1.Text==string.Empty || a2.Text==string.Empty){
    		MessageBox.Show("il faut remplir tous les champs");
    	}
    	else 
    	{
    		//Autant faire la connexion ici..
    		cn.Open();
    		cmd = new SqlCommand("select compte,login,password from utilisateur where login='" + a1.Text + "'", cn);
    		SqlDataReader dr = cmd.ExecuteReader();
    		dr.Read();
     
    		if (a1.Text.Equals(dr["login"].ToString()) && a2.Text.Equals(dr["password"].ToString()))
    		{
     
     
    			if (dr["compte"].ToString() == "admin")
    			{
    				{
    					acceuil acc = new acceuil();
    					acc.Show();
    					this.Hide();
    				}
     
    			dr.Close();
    			}
    		}
    		else
    		{ 
    			MessageBox.Show("votre password ou login est incorrecte");
    		}
     
    		cn.Close();
    	}
     
    }

    Sans oublier d'afficher des messages si notre utilisateur n'existe pas, ou si le mot de passe est incorrecte, etc...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/07/2010, 15h39
  2. Réponses: 2
    Dernier message: 02/07/2009, 10h02
  3. Réponses: 2
    Dernier message: 13/06/2007, 23h35
  4. Problème authentification utilisateurs.
    Par Mevil dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 02/06/2006, 09h04
  5. [Win XP] Problème avec les utilisateurs
    Par digital prophecy dans le forum Windows XP
    Réponses: 3
    Dernier message: 05/05/2006, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo