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

JSF Java Discussion :

[JSF]Authentifier 3 types d'utilisateurs


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 167
    Par défaut [JSF]Authentifier 3 types d'utilisateurs
    Salut,
    Je suis entrain de développer un projet web (JPA+DAO+JSF)
    ce projet est destiné à 3 types utilisateurs: administrateur, usertype1, usertype2.
    Parmi mes tables de base de données, j'ai une table "usertype1" et une table "usertype2", dans lesquelles chacune possède ses attributs parmi ces attributs, on trouve "login" et "mot de passe".
    J'aimerai que chacun lorsqu'il va enter son login et son mot de passe, on lui affiche l'interface relatif à son type (administrateur, usertype1,usertype2).
    En fait, j'ai réussi à faire l'authentification tout en travaillant par une seule entité, et voilà le code:
    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
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Login</title>
        </head>
        <body>
     
        <h1>Login</h1>
     
        <f:view>
            <h:messages style="color: red"
                        showDetail="true"/>
            <h:form id="login">
                <h:panelGrid columns="2" border="0">
                    Login: <h:inputText id="login"
                                           value="#{usermanager.login}"/>
                    Mot de passe: <h:inputSecret id="motPasse"
                                             value="#{usermanager.motPasse}"/>
                </h:panelGrid>
                <h:commandButton id="submit" 
                                 type="submit"
                                 value="Se connecter"
                                 action="#{usermanager.validateUserType1}"/>
     
            </h:form>
        </f:view>
        </body>
    </html>
    Je ne sais pas comment faire, pour authentifier tous dans la meme page sachant que "login" et "mot de passe" de 2 types (userType1 et UserType2) sont enregistrés dans la base de données , chacun dans une table à part, et aussi mon problème avec l'authentification de l'administrateur qui ne possède pas une table (1 seule personne), donc, je ne peux pas l'authentifier comme User1 comme il est donné par le code ci-dessus.
    aidez-moi svp et merci.

  2. #2
    Membre confirmé Avatar de AmineDev9
    Inscrit en
    Décembre 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 193
    Par défaut
    Salut
    bon je pense que c'est mieu de faire une class mère dite "Utilisateur"
    qui contient les attributs (login, password, type de user)
    et pour les autres classes "usertype1" et "usertype2" héritent de cette class mère.
    Donc tu peut maintenant réaliser l'authentification sur une seule table et à l'aide des règles de navigation (fichier face-config.xml) tu ouvre le page volue
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String connect(){
    //requete pour avoir le type de l'utilisateur
    //si null donc l'utilisateur n'existe pas sinon
    //si type de user="Admin" return "pageAdmin"
    //si type de user="usertype1" return " pageUsertype1"
    }
    et dans face-config.xml:
    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
     
    <navigation-rule>
      <display-name>index</display-name>
      <from-view-id>/index.jsp</from-view-id>
      <navigation-case>
       <from-outcome>pageAdmin</from-outcome>
       <to-view-id>Admin.jsp</to-view-id>
       <redirect/>
      </navigation-case>
      <navigation-case>
       <from-outcome>pageUsertype1</from-outcome>
       <to-view-id>/Usertype1.jsp</to-view-id>
       <redirect/>
      </navigation-case>
     </navigation-rule>
    Bon chance

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 167
    Par défaut
    Merci theking9, je vais essayer avec ton idée.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 167
    Par défaut
    Salut,
    Pour theking9, j'ai essayé de travailler selon ta méthode, mais, j'ai trouvé des difficultés surtout pour valider le login et le mot de passe chaque type d'utilisateur,
    j'ai essayé de trouver une autre solution au moins pour le cas de 2 utilisateurs, c'est d'avoir "select" son type, selon la valeur sélectionnée, on fait l'appel à managedBean correspondant, voici, mon code:
    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
    <h:form id="login">
                <SELECT NAME="loginUser">
     
                                             <option value="opt1">type1</option>
                                             <option value="opt2">type2</option>
     
    	    </SELECT>
     
     
               <%
               if ( request.getParameter("loginUser")=="opt1"){
                    %>
                  <h:panelGrid columns="2" border="0">
                    Login: <h:inputText id="login"
                                           value="#{user1.login}"/>
                    Mot de passe: <h:inputSecret id="motPasse"
                                             value="#{user1.motPasse}"/>
                </h:panelGrid>
                <h:commandButton id="submit1"
                                 type="submit"
                                 value="Se connecter"
                                 action="#{user1.validateUser1}"/>
                   <%
                  } else {
                    %>
                   <h:panelGrid columns="2" border="0">
                    Login: <h:inputText id="login"
                                           value="#{user2manager.login}"/>
                    Mot de passe: <h:inputSecret id="motPasse"
                                             value="#{user2manager.motPasse}"/>
                </h:panelGrid>
                <h:commandButton id="submit2"
                                 type="submit"
                                 value="Se connecter"
                                 action="#{user2manager.validateTechnicien}"/>
     
                   <%
                    }
                   %>
     
            </h:form>
    lorsque je fais entrer un login et mot de passe valide pour user2, ça marche, quelque soit la valeur sélectionnée, et pour le user2, il m'affiche que le login n'existe pas.Donc, je conclus que le j'ai une erreur quelque part au sein de l'algorithme if qui retourne apparamment toujours null, c'est pourquoi, ça marche pour le deuxième user.
    svp, j'attends des coups de main

  5. #5
    Membre confirmé Avatar de AmineDev9
    Inscrit en
    Décembre 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 193
    Par défaut
    Bonjour
    Bon ,c'est pas pratique de demander à un utilisateur de sélectionner son type
    J'essaie de t'expliquer un peu:

    1-Créer la table user dans ta base de donnée:
    user (login,password,type)

    2-Dans ta page JSP index.jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <h:panelGrid border="0" columns="2" style="width: 304px; height: 112px">
       <h:outputLabel value="Login :"></h:outputLabel>
       <h:inputText value="#{User.login}" required="true"></h:inputText>
       <h:outputLabel value="Password :"></h:outputLabel>
       <h:inputSecret value="#{User.password}" required="true"></h:inputSecret>
    </h:panelGrid>
    <h:commandButton action="#{User.Connect}" value="Se connecter"/>
    <h:messages style="color: #FF0000"/>
    3-Dans le bean User:
    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
     
    public class User {
        private String login;
        private String password;
        private String type;
        // les getters et les setters
        public String connect {
        //requete de selection: 
        String req="select type from user where login ='"+this.login+"' and password='"+this.password+"'";
        //exécuter ton requete et mettre le valeur de retour dans le varibale "type"
        if ( type.equal("Administrateur") )return "pageAdmin";
        if ( type.equal("type1") )return "pageUsertype1";
        if ( type.equal("type2") )return "pageUsertype2";
        FacesContext context =FacesContext.getCurrentInstance();                   
        FacesMessage message = new FacesMessage("login et/ou password erroné"); 
        context.addMessage("erreur", message); 
        return "erreur";
        }
    4-Dans le face-config:
    //declarer le managed bean
    //regles de navigation
    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
     
    <navigation-rule>
      <display-name>index</display-name>
      <from-view-id>/index.jsp</from-view-id>
      <navigation-case>
       <from-outcome>pageAdmin</from-outcome>
       <to-view-id>Admin.jsp</to-view-id>
       <redirect/>
      </navigation-case>
      <navigation-case>
       <from-outcome>pageUsertype1</from-outcome>
       <to-view-id>/Usertype1.jsp</to-view-id>
       <redirect/>
      </navigation-case>
      <navigation-case>
       <from-outcome>pageUsertype2</from-outcome>
       <to-view-id>/Usertype2.jsp</to-view-id>
       <redirect/>
      </navigation-case>
    </navigation-rule>
    n'oublier pas de créer les pages jsp:
    Admin.jsp, Usertype1.jsp, Usertype2.jsp.

    j'éspère que c'est clair

Discussions similaires

  1. Droits d'accès pour type d'utilisateur
    Par stephane.julien dans le forum C#
    Réponses: 3
    Dernier message: 24/09/2007, 12h44
  2. [Security] Différents types d'Utilisateur
    Par rsubiger dans le forum Spring
    Réponses: 1
    Dernier message: 20/08/2007, 20h18
  3. Réponses: 2
    Dernier message: 14/06/2007, 13h11
  4. Session selon le type d'utilisateur
    Par TomtomGesti dans le forum Langage
    Réponses: 1
    Dernier message: 29/08/2006, 16h17
  5. Réponses: 18
    Dernier message: 08/12/2004, 14h04

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