JPasswordField, comparer les mots de passes.
Bonjour à toutes et tous,
Je suis en train de développer un Quizz en Java.
Pour accéder a la question suivante, mon programme a besoin d'un mot de passe valide que l'utilisateur cherchera dans le bâtiment selon le numero de checkpoint donnée.
Les premières étapes ont été réalisé (Afficher la question, les reponses, et le numero de checkpoint de la base de donnée selon la reponse donnée par l'utilisateur).
Cependant j'ai quelque soucis avec l'outil jpasswordfield.
En effet, il est impossible de vérifier une condition.
Je passe a ma methode une List de password et essaye de comparer le mot de passe actuelle avec le password saisie.
(Mon application respecte le model MVC2)
Code:
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
|
@Override
public void checkPwd(ArrayList<T_Password> p) {
if (p == null) {
System.out.println("Y U DON'T SHOW URSELF ??? : " + p);
} else {
for (T_Password pwd : p) {
System.out.println(pwd.getPassword());
);
jPasswordField = new JPasswordField();
char[] monMdp = jPasswordField.getPassword();
String converti = monMdp.toString();
if (converti.equals(pwd.getPassword())) {
JOptionPane.showMessageDialog(rootPane, "Good Job ! You'll now access to next question ");
refCtrl.suivant();
} else if (converti != pwd.getPassword()) {
JOptionPane.showMessageDialog(rootPane, "Bad Answer, this time U HAVE TO think ! ");
System.out.println(pwd.getPassword() + " " + monMdp + " mdp entré : " +
jPasswordField.getPassword() );
}
}
}
} |
Impossible d’accéder a la première condition (si le mdp saisie correspond bien au mdp de la base de donnée.
Voici le resultat en console :
123 étant le mot de passe correspondant a la réponse selectionné
Code:
123 [C@119721a6 mdp entré : [C@4ec70c4c
probablement le cryptage ici qui ressort deux liste de char différentes, pourtant le mot de passe est le même.
Avez-vous une idée pour comparer ces chars de manière propre ?
(Je veux comparer le mot de passe saisie dans le JPAsswordField avec le mot de passe de ma base de donnée, chaque reponse a un mot de passe et un numero de checkpoint)
Je voudrais éviter d'utiliser la méthode getText car elle est déprécier
tandis que getPassword() ressort une arrayList de char.
Est-il plus propre de garder une arrayList de char ?
Comment comparer ces deux éléments et ainsi accéder à la premiere condition dans ma boucle ?
je vous remercie de votre soutien.
RetributionX
JPasswordField, comparer les mots de passes.
Salut,
Merci de ton aide.
Cependant j'ai résolu le problème différemment, j'utilise maintenant un simple JTextField, et ça marche, lorsque je veux faire les memes actions avec un JPasswordField cela ne fonctionne toujours pas.
Je stock dans un premier temps ma variable dans un char [] que je convertis dans une autre variable en String afin de comparer le mot saisie avec le mot de passe de la base de donnée.
C'est comme s'il comparait une liste de caractère encrypté avec un simple mot de passe du style "123".
Voici ce qu'il me sort cette fois
Code:
1 2
| mdp correct (DB) est : 123
mdp entré (monTextField) est : [C@45ce30b5 |
Je vais cependant tout de même mettre le poste en résolu car j'ai contourner le problème.
Merci encore.