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

AWT/Swing Java Discussion :

[JPasswordField]Protéger un bouton par Mot de passe


Sujet :

AWT/Swing Java

  1. #1
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut [JPasswordField]Protéger un bouton par Mot de passe
    Bonjour tout le monde.

    J'ai un petit peu du mal à voir comment protéger un bouton par mot de passe.
    Je m'explique, j'ai dans une fenêtre plusieurs boutons, dont un qui ne doit fonctionner (et donc exécuter son code) qu'après saisie d'un mot de passe.

    Je voudrais donc mettre dans l'écouteur de mon bouton, un appel à une méthode qui renvoie, selon le mot de passe saisi, true ou false. (un petit peu comme le ferait un JOptionPane.showConfirmDialog() avec l'option YES_NO).

    En gros, je sais récupérer un mot de passe saisi, le comparer avec ma source, etc... mais je ne vois pas du tout comment effectuer un retour lors d'une action sur mon bouton. (la méthode MouseClicked() par exemple est "void" au niveau du retour...)
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  2. #2
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    De même, si il est possible de changer le type d'input sur JOptionPane.showInputDialog() alors je suis partant... (car c'est exactement ce que je veux faire au final)...
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut Re: [JPasswordField]Protéger un bouton par Mot de passe
    Salut,

    Citation Envoyé par leminipouce
    En gros, je sais récupérer un mot de passe saisi, le comparer avec ma source, etc... mais je ne vois pas du tout comment effectuer un retour lors d'une action sur mon bouton. (la méthode MouseClicked() par exemple est "void" au niveau du retour...)
    Normal les evenements ne peuvent rien renvoyer... Mais la lecture de ton mot de passe fait partie de ton evenement...

    Citation Envoyé par leminipouce
    De même, si il est possible de changer le type d'input sur JOptionPane.showInputDialog() alors je suis partant... (car c'est exactement ce que je veux faire au final)...
    Pas avec showInputDialog() qui t'affichera un JTextField quoi qu'il arrive... Mais tu peux très bien le faire avec n'importe quel autre des méthode statique de JOptionPane, car le paramètre message de ces dernière n'est pas forcément une String...

    Tu peux utiliser un composant Swing (JPasswordField par exemple) et il sera directement affiché...

    Tu peux même utiliser un tableau en paramètre, et chaque élément sera ajouté indépendamment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            JPasswordField passwordField = new JPasswordField();
     
            JOptionPane.showMessageDialog(null,
                new Object[] {
                	"Veuillez saisir votre mot de passe top-secret : ",
                	passwordField,
            	}
            );
    a++

  4. #4
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Mnexcellent !

    Voilà mon code, si ça interresse quelqu'un...
    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
    	public boolean passwordValidated() {
    		JPasswordField passwordField = new JPasswordField();
    		passwordField.setFocusable(true);
     
          int returnValue = JOptionPane.showConfirmDialog(null,
              new Object[] {
                 "Enter your password: ",
                 passwordField}, "Password needed",
                 JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
     
          if(returnValue == JOptionPane.OK_OPTION){
    			try{
    				//Retrieve password typed in password field 
    				char[] password = passwordField.getPassword();
    				String pwd = String.valueOf(password);
     
    				return checkPassword(pwd );
    			}catch(Exception e){
    				e.printStackTrace();
    				return false;
    			}
          }else{
          	return false;
          }
    	}
    PS [spécial débutant] : Pour la méthode checkPassword(pwd), on peut se contenter de faire un pwd.equals(bonPwd) si on a déjà le bon mot de passe dans un String.
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  5. #5
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Il y a juste un point qui me gène : comment puis-je définir le focus par défaut sur mon JPasswordField au moment de l'affichage de la confirmDialog ?
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leminipouce
    Il y a juste un point qui me gène : comment puis-je définir le focus par défaut sur mon JPasswordField au moment de l'affichage de la confirmDialog ?
    Dans ce cas il faut que tu te crées toi-même ton JOptionPane, afin de pouvoir faire un requestFocus() juste avant d'afficher la boite de dialogue. L'appel à la méthode showConfirmDialog() doit donc être remplacé par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    JOptionPane pane = new JOptionPane(
                new Object[] { "Enter your password: ", passwordField},
                JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
     
            JDialog dialog = pane.createDialog(null, "Password needed !!!");
            passwordField.requestFocus();
            dialog.setVisible(true);
     
            int returnValue = JOptionPane.CLOSED_OPTION;
            if (pane.getValue() instanceof Integer)
                returnValue = ((Integer) pane.getValue()).intValue();
    a++

  7. #7
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut Parfait
    Evidemment, vu comme ça

    Ton code marche nickel, et c'est exactement celui-là que j'utilise...

    Merci beaucoup !

    Récapitulation du code complet :
    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
    	/**
             * Asks the user for the management password
             * @return whether the password is valid or not.
             */
    	public boolean passwordValidated() {
    		JPasswordField passwordField = new JPasswordField();
    		passwordField.setFocusable(true);
     
    		JOptionPane pane = new JOptionPane(
                new Object[] {"Enter your password: ", passwordField},
                JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
     
    		JDialog dialog = pane.createDialog(null, "Password needed");
    		passwordField.requestFocus();
    		dialog.setVisible(true);
     
    		int returnValue = JOptionPane.CLOSED_OPTION;
    		if (pane.getValue() instanceof Integer)
    			returnValue = ((Integer) pane.getValue()).intValue();
     
          if(returnValue == JOptionPane.OK_OPTION){
    			try{
    				//Retrieve password typed in password field 
    				char[] password = passwordField.getPassword();
    				String pwd = String.valueOf(password);
     
    				return checkPassword(pwd);
    			}catch(JDOMException e){
    				e.printStackTrace();
    				return false;
    			}
          }else{
          	return false;
          }
    	}
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Grand MERCI
    Grand Merci à vous deux pour ce code.

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

Discussions similaires

  1. Comment protéger un programme par mot de passe ?
    Par hackoofr dans le forum Sécurité
    Réponses: 11
    Dernier message: 28/12/2012, 19h41
  2. Protéger une page par mot de passe
    Par glaou dans le forum ASP.NET
    Réponses: 25
    Dernier message: 17/07/2009, 09h25
  3. Protéger mon classeur par mot de passe
    Par Neowile dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/11/2007, 13h32
  4. [Sécurité] Protéger un dossier par mot de passe
    Par duchere dans le forum Langage
    Réponses: 7
    Dernier message: 28/08/2006, 16h22
  5. Protéger une table par Mot de Passe
    Par Furlaz dans le forum Access
    Réponses: 2
    Dernier message: 06/06/2006, 10h58

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