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

GWT et Vaadin Java Discussion :

Connection (login+password)


Sujet :

GWT et Vaadin Java

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut Connection (login+password)
    Bonjour à tous
    dan ma methode Login (pour se connecter),je véréfie si le password et login sont vide alors il affiche un Alert,mais quand que je tape n'importe quoi il se connect aussi,comment je fais pour le rederiger à une page erreur ,afficher Alert("passworrd et login érroné"),


    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
    39
    40
    41
    42
    43
     
     
     public void onClick(Widget sender)
          {
     
            if (login.getText().equals(""))
            {
              Window.alert("Veuillez taper votre login");
              return;
            }
            if (password.getText().equals(""))
            {
              Window.alert("Veuillez taper votre mot de passe");
              return;
            }
     
     
            AsyncCallback callback = new AsyncCallback()
            {
     
              public void onSuccess(Object result)
              {
                p = (Personne) result;
     
                RootPanel.get().clear();
                RootPanel.get().add(new Acceuil());
     
              }
     
              public void onFailure(Throwable ex)
              {
     
                Window.alert("erreur");//com.google.gwt.user.client.Window.alert("erreur");
              }
            };
     
            svc.CheckLogin(login.getText(), password.getText(), callback);
          }
          });
     
       }
     
      MyServiceAsync rpc = MyService.Util.getInstance();
    lors de l'exécution il se connecte dans ts les ceas méme si je tape n'mporte quoi
    merci de m'aider
      0  0

  2. #2
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    Le check se fait sur le serveur puisque la DB est la-bas.
    En cas de login/pw incorrects, tu peux, par exemple renvoye "null" au client (dans ce cas il suffit de faire if (result==null) afficher_erreur; dans la callback) ou generer une exception.
      0  0

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    merci
    et voila mon checkLogin1,il véréfie le password et login mais lors de l'esécution il affiche dans la consol ,(erreur de password et login ),alors comment il ma'ffiche ça dans une page?

    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
     
     
     if (p != null)
        {
          boolean retour = p.getPasswd().equals(password);
     
          if (retour)
          {
            if (_log.isDebugEnabled())
              _log.debug("[checkLogin] user : \"" + login + "\" authentifiation");
     
          } else
            _log.info("[checkLogin] erreur de mot de passe pour l'utilisateur "
                + login + " / " + password);
          return retour;
        } else
          _log.info("[checkLogin] l'utilisateur " + login + " n'existe pas");
          return false;
      }
    merci pour votre réponse
      0  0

  4. #4
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    Comme je t'ai ecrit plus haut.
    Dans le cas d'infos de log incorrectes:
    - tu renvoies "null" au client (servlet),
    - dans la callback du client, tu testes l'objet de retour,
    - si c'est null, tu affiches une popup ou ce que tu veux.
      0  0

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    voila ce que j'ai fais au niveau client,mais il m'a rien affiché et merci pour cotre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     public void onFailure(Throwable ex)
              {
                boolean retour=false;
     
                if(retour)
                  Window.alert("erreur");
              }
            };
      0  0

  6. #6
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    Si tu ecris "boolean retour=false;", alors retour est automatiquement a false.

    Mais pourquoi ne fais-tu pas comme j'ai ecrit ???
    Tu renvoies null et tu testes (pas dans onFailure(...) mais dans onSuccess(...)).
      0  0

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    voila ce que j'ai fais,c'est vrai il ouvre une autre page (erreur)mais le probléme c'est au méme temps il se connecte(il se dérige vers Acceuil),comment je fais pour qu'il reste sur la premiére page

    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
     
     
     
              public void onSuccess(Object result)
              {
                String retour =null;
     
                p = (Personne) result;
     
                    RootPanel.get().clear();
                    RootPanel.get().add(new Acceuil());
                 if (retour==null)
                  Window.open("erreur", retour, retour);
     
     
              }
      0  0

  8. #8
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    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
              public void onSuccess(Object result)
              {
     
                 if (result==null) {
                  Window.open("erreur", retour, retour);
                  return;
                 }
     
                p = (Personne) result;
     
                    RootPanel.get().clear();
                    RootPanel.get().add(new Acceuil());
     
     
              }
      0  0

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    merci
    mais il fais toujours la connection ,(et il se dérige vers page d'acceuil ),il n'affiche aucun ALert
      0  0

  10. #10
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    Donc ton serveur ne renvoie pas "null" lors d'infos de login incorrectes.
      0  0

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    voila quand que je fais commeça il il se connecte pas dans les deux cas ,méme si le password et login sont correcte ,c'est ou alors le probléme
    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
     
     
     {
                if (!((Boolean)result).booleanValue()) 
               {
     
                  Window.open("erreur", hashFromDB, hashFromDB);
                 return ;
                 }
                else{
                p = (Personne) result;
     
                    RootPanel.get().clear();
                    RootPanel.get().add(new Acceuil());
     
              }
              }
      0  0

  12. #12
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    result est quoi ?
    Tu fais un premier cast en boolean, un second en Personne.
    Que renvoie le serveur ? Un boolean ? Ou une Personne ?
      0  0

  13. #13
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    voila il renvois personne,voila mon code de checkLogin1()
    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
     
     
    private boolean checkLogin1(String login, String password) throws RemoteException, MalformedURLException, NotBoundException// ***************************//
      {
        if (_log.isTraceEnabled())
          _log.trace("[checkLogin] 0 login : " + login + " password : " + password);
        FGXPersistentDoor persistentLayerDoor = (FGXPersistentDoor) getPersistentDoor();
     
        //if (_log.isTraceEnabled())
          _log.trace("[checkLogin] 1 login : " + login + " password : " + password);
        FGXDBUserRights p = persistentLayerDoor.loadUser(login);
     
        if (_log.isTraceEnabled())
          _log.trace("[checkLogin] 2 login : " + login + " password : " + password);
        if (p != null)
        {
          boolean retour = p.getPasswd().equals(password);
     
          if (retour)
          {
            if (_log.isDebugEnabled())
              _log.debug("[checkLogin] user : \"" + login + "\" authentifie");
     
          } else
            _log.warn("[checkLogin] erreur de mot de passe pour l'utilisateur "
                + login + " / " + password);
          return retour;
        } else
          _log.warn("[checkLogin] l'utilisateur " + login + " n'existe pas");
          return false;
      }
      0  0

  14. #14
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    Ton code ne m'aide pas, il ne montre pas la reponse du serveur.

    Si le serveur renvoie une Personne, a quoi sert le cast en boolean "((Boolean)result).booleanValue()" ?
      0  0

  15. #15
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    mais dans mon code je teste sur le password si correcte ,moi sa m'interesse ce que renvois checkLogin();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    boolean retour = p.getPasswd().equals(password);
    aprés je teste sur retouret a la fin je renvoi boolean
    alors coté client je teste sur le boolean ,non!
      0  0

  16. #16
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par groupe Voir le message
    alors coté client je teste sur le boolean ,non!
    Non.
    Ta methode de test est appellee par le serveur, pas par le client.
    Donc c'est au serveur de tester le booleen, pas au client.
      0  0

  17. #17
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    j'ai failli arrivé mais le probléme c'est qui'il se connecte pas si login et password sont correcte ,il fais rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     p = (Personne) result;
               String retour =null;
               if (retour==null)
                 Window.open("erreur", retour, retour);
               else
               {   
                    RootPanel.get().clear();
                    RootPanel.get().add(new Acceuil());
          }}
      0  0

  18. #18
    Membre régulier Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Points : 110
    Points
    110
    Par défaut
    Bien entendu !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
               String retour =null;
               if (retour==null)
    Tu initialises retour a null, puis tu testes s'il est null.
    Il sera toujours null, peu importe ce qui se passe cote serveur.
    Tu dois tester la valeur de retour de ta callback, et pas une variable que tu definies juste avant.

    Je t'ai ecrit quelque chose qui devrait marcher dans la page precedente (13h32).
      0  0

  19. #19
    Débutant
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 48
    Points
    48
    Par défaut
    merci de m'aider caroline ,mais voila ,j'arrive à afficher l'Alert si login et password sont incorrecte ,mais ca se passe la méme chose s'ils sont correcte aussi il m'affiche lla méme Alertn,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public void onSuccess(Object result)
              {
                Personne p = (Personne) result; 
               //boolean retour =false; 
              if (p!=null){
     
              Window.alert("Invalid login/password !");
              }
              else 
              {  RootPanel.get().clear();
                  RootPanel.get().add(new Acceuil());
     
                }
    merci pour toute aide
      0  0

  20. #20
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Dans ta classe cliente :
    qui écoute les évènements onClick
    qui contient une référence sur ton service appelé svc (tu dois ton avoir quelque chose du genre NomDeTonService svc = NomDeTonService.Util.getInstance()

    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
     
    public void onClick(Widget sender)
    {
       if (login.getText().equals(""))
       {
      	Window.alert("Veuillez taper votre login");
            return;
       }
       if (password.getText().equals(""))
       {
      	Window.alert("Veuillez taper votre mot de passe");
            return;
       }
     
     
        AsyncCallback callback = new AsyncCallback()
        {
            public void onSuccess(Object result)
            {
        	    p = (Personne) result;
     
                RootPanel.get().clear();
                RootPanel.get().add(new Acceuil());
            }
     
            public void onFailure(Throwable ex)
            {
                Window.alert("erreur");
            }
       };
     
       svc.CheckLogin(login.getText(), password.getText(), callback);
    }
    Dans ton interface NomDeTonService, tu dois donc avoir une méthode
    Personne CheckLogin(String login, String password)

    Pourquoi ? parce que c'est ce que tu attends dans ton callback :
    p = (Personne) result;

    Or, dans ta méthode CheckLogin montrée dans ton exemple (un des posts prédédent), tu renvois un boolean.
    Ce qui est incompatible avec ce que tu as écris précedemment.

    Bien entendu, ces 2 solutions sont envisageable mais séparémment !!! :
    • soit tu indiques au serveur un login et un password et il te retourne un booléen te disant ok ou pas ok
    • soit tu indiques au serveur un login et un password et il te retourne la personne s'il la trouve ou null s'il ne la trouve pas !


    1° façon : test de la validité du password par le serveur

    Côté client :

    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
     
    AsyncCallback callback = new AsyncCallback()
    {
        public void onSuccess(Object result)
        {
        	Boolean b = (Boolean) result;
     
        	if (b != null && b.booleanValue == true)
        	{
        	   RootPanel.get().clear();
          	   RootPanel.get().add(new Acceuil());
        	}
        	else
        	{
        	   Window.alert("invalide");
        	}
        }
     
        public void onFailure(Throwable ex)
        {
             Window.alert("erreur");
        }
    };
     
    svc.CheckLogin(login.getText(), password.getText(), callback);
    Côté serveur :
    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
     
    private boolean checkLogin(String login, String password) throws RemoteException, MalformedURLException, NotBoundException
    {
        FGXPersistentDoor persistentLayerDoor = (FGXPersistentDoor) getPersistentDoor();
     
        // Recherche des droits de la personne en fonction du login
        FGXDBUserRights p = persistentLayerDoor.loadUser(login);
     
        if (p != null)
        {
           // Personne trouvée, on vérifie le password
           boolean passwordOk = p.getPasswd().equals(password);
     
           if (passwordOk)
           {
              if (_log.isDebugEnabled())
                  _log.debug("[checkLogin] user : \"" + login + "\" authentifie");
           }
           else
           {
              _log.warn("[checkLogin] user : \"" + login + "\" non authentifie !");
           }
     
           return passwordOk;
        }
        else
        {
        	 _log.warn("[checkLogin] l'utilisateur " + login + " n'existe pas");
         	 return false;
        }
    }
    2° façon : test de la validité du password par le client après avoir récupérer la personne :

    Je te l'écris pas pour les raisons suivantes :
    • Envoyer la personne (login + password) au client et testé cote client : faille de sécurité !!!
    • Pour envoyer la personne au client, il faut que sa classe soit transformable en javascript or dans le code coté serveur, je doute que la classe "FGXDBUserRights" soit dans un de tes packages client.


    Mais si tu as effectivement une classe Personne dans ton package client et que ton service est capable de te retourner cette personne en fonction (login/password),
    cela reste du possible et il faudra procéder de la manière indiquer par caroline, à savoir tester la nullité de la personne.


    En espérant que tu y verras plus clair ...

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.
      0  0

Discussions similaires

  1. [MySQL] se connecter à la base sans des bons login & password
    Par elabadiabdelmoula dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/03/2013, 16h31
  2. Réponses: 5
    Dernier message: 16/03/2011, 21h41
  3. Connection Proxy - Sauvegard Login & Password
    Par JmL40 dans le forum Firefox
    Réponses: 0
    Dernier message: 29/01/2010, 15h59
  4. connection Login+password Mysql
    Par tiesto95 dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 17/06/2008, 09h16
  5. Login Password par défaut
    Par YanK dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/09/2003, 14h34

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