cs_guiguizeitzt
Messages postés28Date d'inscriptionsamedi 3 mai 2008StatutMembreDernière intervention24 mars 2011
-
24 mars 2011 à 15:02
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 2013
-
25 mars 2011 à 09:32
Bonjour je souhaite protéger une appli en c# par un mot de passe donc j'ai fait une fenêtre pour l'authentification, et je souhaite stocker les mots de passe et nom d'utilisateur dans une Hashtable. J'ai créer deux clés et deux valeurs :
Le souci c'est que je peu tester si le nom existe et le mot de passe en fonction de ce que je rentre dans les textbox mais si je met par exemple admin et comme mot de passe : mdp , le test deviens vrai alors que je veux que ce soit juste admin - password et utilisateur - mdp.
if (tablemdp.ContainsKey(tbid.Text) && tablemdp.ContainsValue(tbmdp.Text))
{
// accès à l'autre fenêtre
this.Close();
}
else
{
MessageBox.Show("Mot de passe incorect");
}
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 24 mars 2011 à 15:14
Salut,
faut simplement tester en 2x, algo :
// username et password sont les info saisies par l'utilisateur
if (mahash.contient(username)) {
if (mahash[username] == password) {
// tout est bon, on passe à l'action
} else {
Message("t'as ripé sur le MDP");
}
} else {
Message("t'existe même pas");
}
pour des raisons de sécurité il vaut mieux mettre le même message d'erreur pour les 2 cas (un utilisateur malhonnête pourrait valider un login sinon), mais là c'est pour que tu comprennes bien le découpage ;)
cs_guiguizeitzt
Messages postés28Date d'inscriptionsamedi 3 mai 2008StatutMembreDernière intervention24 mars 2011 24 mars 2011 à 15:35
Merci pour ta reponse je vois que tu es toujours aussi efficace sur mes post ;-)
mais cette solution m'a deja effleurer l'esprit mais j'obtient toujours que le mot de passe est pas bon si mon nom est bon ( un peu cafouilli ma phrase ^^)
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 25 mars 2011 à 09:20
Parce que les tests sont ordonnés ?
Quand je faisais du C on apprenait qu'il fallait surtout pas imaginer l'ordre d'interprétation d'une conditionnelle multiple. ça a dû changer avec le C# je suppose, bon à savoir ;)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 mars 2011 à 09:28
idem en C, mais cela dépend du compilateur, chacun est plus ou moins libre, cette manière de procéder doit bien être édictée dans tel ou tel document de standardisation.