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 :

Authentification de login utilisateur


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Par défaut Authentification de login utilisateur
    Bonjour à tous, je viens de me lancer au GWT, là je suis entrain de développer mon application en utilisant le Cypal studio tout va bien du coté client. Maintenant je commence le coté serveur c'est OK. Mais, mon souci c'est de communiquer avec ma base de données qui est sur une autre machine.
    Récupérer le nom et le mot de passe utilisateur pour les comparer avec ma table pour l'authentification me pose problème.

    Au secours et je vous remercie d'avance.

  2. #2
    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
    Par défaut
    Qu'est ce qui te pose problème exactement ?

    Il faut décomposer en étape :

    Est-ce que l'interface graphique (partie cliente) s'affiche déjà toute seule ?
    Quitte à n'afficher que "hello"

    Est-ce que tu arrives à utiliser un service tout simple (partie serveur) ?
    Quitte à envoyer des paramètres simple et recevoir un résultat simple.

    L'exemple GWT crée par le plugin de Google illustre ces deux étapes.


    Après, il te faut en java (pas spécifique à gwt) accèder à ta base de données à partir de ton serveur.
    Tu peux le faire directement (JDBC), en externalisant tes requêtes (Ibatis) ou en utilisant un ORM (Hibernate, ...) directement ou via JPA ou JDO.
    Puis écrire un simple programme java (avec un main) ou un Test Unitaire (junit) pour voir si cet accès DB fonctionne.

    Une fois qu'il fonctionne, tu mets ce code (du main ou du TU) dans une méthode de l'implémentation de ton service RPC.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Par défaut Authentification de login utilisateur
    Avant tout je te remercie beaucoup de m'avoir répondu si vite.
    - Coté client mon IHM répond très bien
    - Avec un simple authentification coté serveur également.
    - Mon code java répond bien avec Jdbc.

    Maintenant, mon code de connexion java je l'ai mis du coté serveur comme il est demandé.

    Je ne sais pas ce qui je ne fais pas bien mais, je veux essayer de nouveau et je te donnerai la suite.

    Merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Par défaut Vérifier le login user
    Bonjour à tous,
    Je t'envoie ces lignes pour solliciter de l'aide. C'est pour tester si l'utilisateur est dans une table si oui il a l'accès au système (la page d'accueil par exemple).
    Je teste le nom et mot de passe.

    Merci d'avance
    //side Server

    public String verifierLoginPassword(String login, String password) throws ClassNotFoundException, Exception,SQLException
    {
    try
    {
    //Etablissement de la connection
    Class.forName("oracle.jdbc.driver.OracleDriver") ;
    conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.56.101:1521:orcl","admin","oracle") ;
    stmt = conn.createStatement() ;
    rst = stmt.executeQuery("Select * from User where (nom='"+login+"' and pswd='"+password+"')") ;
    while(rst.next())
    System.out.println(rst.getString(1)) ;
    }
    catch(SQLException e)
    {
    System.out.println("SQLException: " + e) ;
    }
    finally
    {
    try
    {
    stmt.close() ;
    conn.close() ;
    }
    catch(SQLException e)
    {
    e.printStackTrace() ;
    }
    }
    return password;
    }


    ==========================================================
    //side Client
    ServiceDefTarget endpoint = (ServiceDefTarget) loginService;
    String moduleRelativeURL = GWT.getModuleBaseURL() + "login" ;
    endpoint.setServiceEntryPoint(moduleRelativeURL) ;

    final AsyncCallback callback = new AsyncCallback()
    {
    @Override
    public void onSuccess(Object result)
    {
    // TODO Auto-generated method stub
    Boolean b = (Boolean) result ;

    if(b != null && b.booleanValue() == true)
    {
    RootPanel.get().clear() ;
    RootPanel.get().add(new User() ) ;
    }
    else
    {
    Window.alert("Invalide");
    }
    }

    @Override
    public void onFailure(Throwable caught)
    {
    / TODO Auto-generated method stub
    MessageBox.alert("Erreur", "Erreur d'authentification") ;
    System.out.print("onFailure!, Connexion introuvale") ;
    }
    };

    loginService.verifierLoginPassword(txtFldName.getText(), txtFldpassWord.getText(), callback) ;

    }

  5. #5
    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
    Par défaut
    Plusieurs choses ne vont pas.

    1°) Le type dans le callback, c'est le type de retour de la méthode RPC.

    Dans ta méthode RPC retourne un String et dans ton AsyncCalback, tu caste en Boolean.

    2°) La signature de la méthode RPC server side doit correspondre à celle de ton service client side. Comme côté client, c'est compilé en js, ton code java doit être gwt compatible ! et Je crains que ça ne soit le cas puisque que ta méthode côté serveur inclus un throws SQLExecption dans sa signature.


    Piste de correction :

    Tu définis la signature de ta méthode côté client :
    A supposer que tu veuilles bien un booléen en retour :

    LoginService :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    public boolean verifierLoginPassword(String login, String password)

    LoginServiceAsync :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    public void verifierLoginPassword(String login, String password, AsyncCallback<Boolean> callback)

    Côté serveur, tu as ta méthode de service gwt qui appel ta méthode de connexion à ta base :

    LoginServiceImpl :

    Code java : 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
    public boolean verifierLoginPassword(String login, String password)
    {
          try
          {
               return verifierEnBase(login, password);
          }
          catch(Exception e)
          {
               System.err.println(e);
               return false;
          }
    }
     
    public boolean verifierEnBase(String login, String password) throws  ClassNotFoundException, Exception,SQLException
    {
       // Ton code qui fait la requête, qui vérifie et qui renvoi un booléen true si c'est ok ou false sinon.
    }

    Remarque :
    Tu peux donc tester la méthode verifierEnBase indépendamment de GWT.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Par défaut Vérifier le login GWT
    Bonjour à tous,
    Je t'envoie ces lignes pour solliciter de l'aide. C'est pour tester si l'utilisateur est dans une table si oui il a l'accès au système (la page d'accueil par exemple).
    Je teste le nom et mot de passe.

    Merci d'avance
    //side Server

    public String verifierLoginPassword(String login, String password) throws ClassNotFoundException, Exception,SQLException
    {
    try
    {
    //Etablissement de la connection
    Class.forName("oracle.jdbc.driver.OracleDriver") ;
    conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.56.101:1521:orcl","admin","oracle") ;
    stmt = conn.createStatement() ;
    rst = stmt.executeQuery("Select * from User where (nom='"+login+"' and pswd='"+password+"')") ;
    while(rst.next())
    System.out.println(rst.getString(1)) ;
    }
    catch(SQLException e)
    {
    System.out.println("SQLException: " + e) ;
    }
    finally
    {
    try
    {
    stmt.close() ;
    conn.close() ;
    }
    catch(SQLException e)
    {
    e.printStackTrace() ;
    }
    }
    return password;
    }


    ==========================================================
    //side Client
    ServiceDefTarget endpoint = (ServiceDefTarget) loginService;
    String moduleRelativeURL = GWT.getModuleBaseURL() + "login" ;
    endpoint.setServiceEntryPoint(moduleRelativeURL) ;

    final AsyncCallback callback = new AsyncCallback()
    {
    @Override
    public void onSuccess(Object result)
    {
    // TODO Auto-generated method stub
    Boolean b = (Boolean) result ;

    if(b != null && b.booleanValue() == true)
    {
    RootPanel.get().clear() ;
    RootPanel.get().add(new User() ) ;
    }
    else
    {
    Window.alert("Invalide");
    }
    }

    @Override
    public void onFailure(Throwable caught)
    {
    / TODO Auto-generated method stub
    MessageBox.alert("Erreur", "Erreur d'authentification") ;
    System.out.print("onFailure!, Connexion introuvale") ;
    }
    };

    loginService.verifierLoginPassword(txtFldName.getText(), txtFldpassWord.getText(), callback) ;

    }

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Par défaut
    Bonjour,

    Utilises les balises CODE pour commencer, c'est beaucoup plus lisible pour nous. Et ça serait bien de savoir le problème exact plutôt que d'essayer de lire du code pour le trouver...

    Ceci dit, c'est quand même assez évident ici... Tu devrais le voir tout de suite à l'exécution.

  8. #8
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    D'accord avec glebreton, utilises les balises [CODE]...

    Maintenant, c'est quoi exactement ta question? Le code que tu indiques ne fonctionne pas (visiblement non)? est ce que tu as un message d'erreur?
    Des détails, des détails.. enfin!

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Par défaut Vérifier le login user
    Salut benwit,

    Merci je viens de le tester en dehors du GWT ça marche mais, maintenant il faut que je l'intègre dans GWT. Je te remercie et A+

  10. #10
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rst = stmt.executeQuery("Select * from User where (nom='"+login+"' and pswd='"+password+"')") ;
    Avec un code comme cela, tu risques fort de te faire pirater en deux secondes. Fais un tour sur les forums a propos de SQL Injection, ou fais-toi expliquer par un collègue.
    Nicolas

Discussions similaires

  1. Récupération du domaine et du login utilisateur
    Par [DreaMs] dans le forum Delphi
    Réponses: 2
    Dernier message: 26/06/2007, 17h34
  2. [ASP.NET 2.0][C#] Login utilisateur
    Par lenoil dans le forum ASP.NET
    Réponses: 4
    Dernier message: 14/02/2007, 08h48
  3. [RegEx] Quels caractères interdire pour les logins utilisateurs ?
    Par Death83 dans le forum Langage
    Réponses: 24
    Dernier message: 15/05/2006, 21h45
  4. [Authentification Realm] Infos utilisateur et redirection
    Par mamiberkof dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/04/2006, 22h16
  5. [LDAP] Authentification d'un utilisateur
    Par toctof dans le forum Sécurité
    Réponses: 7
    Dernier message: 13/12/2005, 18h21

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