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");
}
// 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 ;)
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 ^^)
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 ;)
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.