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

Portails Java Discussion :

Authentification


Sujet :

Portails Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut Authentification
    Bonjour,

    Je travaille avec Liferay 6.0.6 bundle avec JBoss et j'aimerais savoir comment récupérer les cordonnées d'un utilisateur connecté à travers Liferay ?

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 140
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Essai avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        FacesContext fc = FacesContext.getCurrentInstance();
        ExternalContext externalContext = fc.getExternalContext();
        Long id = Long.parseLong(externalContext.getUserPrincipal().getName());
        try {
             user = UserLocalServiceUtil.getUserById(id);
        } catch (PortalException e) {
             e.printStackTrace();
        } catch (SystemException e) {
             e.printStackTrace();
        }
    Alors ici on récupère l'objet user qui contient toutes les info sur l'utilisateur courant.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    merci pour votre réponse,

    mais j'ai une question peut être débutant pour une personne qui a déjà travailler avec liferay

    mon but est de faire l'authentification et faire la redirection vers les pages jsp selon le role d'utilisateur

    je travail avec liferay 6.0.6 bundle with jboss et je fait relier liferay avec mysql

    je travail avec la table User de liferay mais je travail avec ma propre table role et n'est pas utiliser la table role de liferay ( car franchement peut être je me trouve perdus si j'utilise role proposé par liferay à moin que vous m'aider à faire tourner mon exemple selon la table user et role proposé par liferay en ajoutant role depuis l'interface de liferay)

    dans mon application JEE ( faite avec EJB3 et struts2) qui doit etre déployé dans liferay je juste creer dans la partie EJB la class persistence role avec le dao local et remote

    et dans le projet web : dans une class testAction


    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    import com.liferay.portal.model.User;
    import com.liferay.portal.util.PortalUtil;
     
    public class testAction extends ActionSupport{
     
     
    	private static final long serialVersionUID = 1L;
     
    private RoleDaoRemote RoleDao;
     
     
    public RoleDaoRemote getRoleDao() {
    		return roleDao;
    	}
     
    	public void setRoleDao(RoleDaoRemote roleDao) {
    		this.roleDao = roleDao;
    	}
     
     public testAction() {
        	try {
     
     
     
        		Context context=new InitialContext();
    			setRoleDao((RoleDaoRemote) context.lookup("emp"));
     
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
        } 
     
     
    public String Authentification()
    	{
     
     
    //ici c'est la plus importante partie 
     
    //  je dois récupérés les utilisateurs depuis la base de donnés ( depuis la 
     
    //table user de liferay) puisque mon application pointe aussi dans la même
     
     //base que liferay  c'est à dire mon application ajoute une table role (appele
     
     //marole) au autre tables qui sont créer par défaut en liant liferay à MYSQL 
     
     
    //après la récupération des utilisateurs de la base de donné je dois récupérer
     
     
     //aussi les roles depuis ma propre table role de la base de donnés 
     
     
    //comparant les valeurs saisis ( mail et login) avec les valeurs récupérés et 
     
    //avec role affecter pour cette utilisateurs à ce moment je dois faire la 
     
    //redirection qui est faite dans le fichier struts.xml  selon la valeur de retour 
     
     
     
     
    return "success"  // c'est un exemple de valeur retourné
     
     
    }
     
     
     
     
     
    }



    pour résumer je vous donne un scenario de test

    supposant que mon application JEE (EJB3 et struts2) j'ai deux role( consultant et directeur) et deux utilisateur

    (nom : alen , email : alen@test.org ,login : alenalen , role : consultant)

    (nom : jirard , email : jirard@verif.fr , login jirardjirard ,role : directeur)


    pour le consultant j'ai deux pages jsp ( consult.jsp et verification.jsp)
    et pour le directeur j'ai deux pages jsp ( manage.jsp et edit.jsp)


    après déployé cette application dans liferay et après faire exécuter liferay et dans la page d'authentification de liferay

    si je tape pour email : alen@test.org et pour le login : alenalen

    je dois entrer comme un consultant pour mon application c'est à dire je dois trouver seulement ces deux pages jsp : consult.jsp et verification.jsp


    merci d'avance

  4. #4
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    mon but est de récupérer l'utilisateur après authentification
    Je peux le faire cette Récupération à travers une page jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
    <%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
    <%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
     
    <liferay-theme:defineObjects />
    <portlet:defineObjects />
     
    <liferay-ui:user-display userId="<%= user.getUserId() %>" />
    mais je veux faire la même chose mais à travers le code Java



    Je vais vous montrer pourquoi je veux Récupérez l'utilisateur connecté, après authentification via liferay

    mon application JEE est développé avec Struts2 et contient deux profils (ou rôles)
    : Consultant et Directeur

    et dans cette application, je ne créé pas la page jsp pour l'authentification parce que je utiliser l'authentification de liferay (c'est le concept de SSO)

    et je travaille avec la table user qui est généré automatiquement par liferay

    Donc, dans mon application JEE je dois récupérer l'utilisateur connecté et je dois tester son rôle:
    s'il est directeur donc je dois voir seulement les pages jsp de directeur et de la même manière pour le rôle de consultant


    Donc, je dois le faire la recupération dans le code java: je parle de l'utilisateur connecté sans aucune action dans ma portlet déployé


    l'objet utilisateur qui est déclaré dans ma classe Java doit être rempli à travers la page login.jsp de liferay (cette page JSP est pour l'authentification)


    Ainsi, le senario test final:

    J'ai deux utilisateurs dans ma base de données:

    Nom: Franco, e-mail: franco@test.org, login: Franco, Rôle: Directeur
    Nom: Email adam: f@test.org, login: Adam, Rôle: Consultant

    et après le déploiement de mon apllication JEE dans liferay

    si je fait l'authentification avec franco@test.org et pour login: franco

    J'ai dois trouver dans l'application déployée uniquement les pages JSP pour le directeur


    pour faire ce scénario je fais dans une classe java de mon application

    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
    import com.liferay.portal.model.User;
    public class extends testAction ActionSupport {
     
     
          private User user;
    public void processAction (
    ActionRequest actionRequest, ActionResponse actionResponse)
    throws IOException, PortletException {
    try {
         user = PortalUtil.getUser (actionRequest);
     
    } Catch (e PortalException) {
        / / TODO Auto-generated catch block
        e.printStackTrace ();
    } Catch (SystemException e) {
        / / TODO Auto-generated catch block
        e.printStackTrace ();
    }
    }
     
     
     
    public String initial() throws Exception {
     
    user = PortalUtil.getUser (actionRequest);
    if (user.getRole (). equals ("director"))
    return "AuthDirector";
     
    return "AuthoConsultant";
        }
     
     
    }
    et pour le fichier struts.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
    16
    17
    18
     
    <? Xml version = "1.0" encoding = "UTF-8"?>
    <! DOCTYPE struts PUBLIC
        "- / / Apache Software Foundation / / DTD Struts Configuration 2.0 / / EN"
        "Http://struts.apache.org/dtds/struts-2.0.dtd">
     
    <struts>
    <package name="view" extends="struts-portlet-default" namespace="/view">
     
    <action name="initial class="com.test.action.testAction" method="">
     
    <result name="AuthDirector"> / WEB-INF/view/HomeDirector.jsp </ result>
     
    <result name="AuthoConsultantr"> / WEB-INF/view/HomeConsultant.jsp </ result>
    </ Action>
     
    </ Package>
    </ Struts>

    je fait autre test sans success

    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
     
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import com.liferay.portal.model.User;
    public class extends testAction ActionSupport {
     
     
      private User user;
     
    FacesContext fc = FacesContext.getCurrentInstance();
             ExternalContext externalContext = fc.getExternalContext();
             Long id = Long.parseLong(externalContext.getUserPrincipal().getName());
     
    public String initial() throws Exception {
     
    user = UserLocalServiceUtil.getUserById(id);
    if (user.getRole (). equals ("director"))
    return "AuthDirector";
     
    return "AuthoConsultant";
        }
     
     
    }


    merci d'avance

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 140
    Points : 84
    Points
    84
    Par défaut
    Bonjour alen22,
    Si tu veux récupérer l'utilisateur courant, je te propose de creer un classe currentUser qui va recuperer l'objet "User" de liferay comme ceci :
    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
    import com.liferay.portal.kernel.exception.PortalException;
    import com.liferay.portal.kernel.exception.SystemException;
    import com.liferay.portal.model.User;
    import com.liferay.portal.service.UserLocalServiceUtil;
    
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    
    public class CurrentUser {
    
    	public User getCurrentUser() {
    		User user = null;
    	     FacesContext fc = FacesContext.getCurrentInstance();
    	     ExternalContext externalContext = fc.getExternalContext();
    	     Long id = Long.parseLong(externalContext.getUserPrincipal().getName());
    	     try {
    			user = UserLocalServiceUtil.getUserById(id);
    
    		} catch (PortalException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (SystemException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	     return user;
    	}
    
    }
    alors dans ta page jsp il suffit d'instancier un objet user comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CurrentUser currentUser=new CurrentUser ();
    User user=currentUser.getCurrentUser();
    alors test ce que j'ai fait, et si ça marche je vais te montrer comment tu recupere le/les role(s) de ce user..
    bonne chance

Discussions similaires

  1. [TIdSMTP] Envoi d'un mail avec authentification ?
    Par BACUS dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/06/2004, 16h18
  2. [C#] Authentification sur les fichiers Pdf
    Par ensisoft dans le forum ASP.NET
    Réponses: 14
    Dernier message: 04/05/2004, 12h10
  3. [Débutant]Classe d'Authentification : compilation impossible
    Par acyclique dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/08/2003, 19h42
  4. Authentification Sécurisée
    Par HPJ dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 23/06/2003, 10h45
  5. [POSTGRES] pb configuration authentification
    Par Fyna dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/06/2003, 19h16

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