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 - Gestion de sessions


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut JSF - Gestion de sessions
    Bonjour !

    Tout neuf sur JSF (et JEE en général), je développe une application web où l'on a besoin d'être identifié pour accéder à son espace perso.

    J'ai donc des pages jsp qui communiquent avec un controlleur JSF tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @ManagedBean
    @SessionScoped
    public class ClientController extends AbstractController implements Serializable {
     
        @EJB
        private ClientFacadeLocal clientBean;
     
        private Client client = new Client();
     
    (...)

    Par ailleurs, mon controlleur lui même communique avec mon Stateless Bean lié à une ou plusieurs entités (JPA).

    Donc pas de problème pour se connecter, pas de problème pour se déconnecter.


    Mes soucis sont les suivants :
    1. si je suis connecté depuis trop longtemps à mon compte et que je recharge la page, j'ai alors perdu ma session. Comment détecter la perte de session, et rediriger vers ma page "login.jsp"
    2. si je ne suis pas connecté à mon compte et que je saisi l'URL directement, comment rediriger vers la page d'identification "login.jsp"


    Voilà.. je vois remercie d'avance !

  2. #2
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    Un lien qui pourra peut être t'aider,
    http://blog.developpez.com/djo-mos/p...es-dans-jsf-r/

    Pratiquement moi je crée une interface que j'implémente dans chaque Bean. Elle est appellé dans mon implémentation du phaseListner, ainsi à chaque appel l'authentification est vérifiée sinon je fais une redirection vers la page de Login.

    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
     
    if (!isLoginOk))
    	{
    		FacesContext fctx = FacesContext.getCurrentInstance();
    		ExternalContext ectx = fctx.getExternalContext();
    		String url = ((HttpServletRequest) ectx.getRequest())
    		.getContextPath()
    		+ "/pages/page_de_login.jsf";	
    		try {
    			ectx.redirect(url);
    		} catch (IOException e) {
     
    		e.printStackTrace();
    		}
    	}

  3. #3
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut
    Citation Envoyé par juridakus Voir le message
    Un lien qui pourra peut être t'aider,
    http://blog.developpez.com/djo-mos/p...es-dans-jsf-r/
    Ok, merci pour le lien !

    Donc si je résume ce que j'ai compris... il faut que mon controlleur implémente l'interface Filter, et je gère la méthode doFilter !

    C'est bien ça ?

  4. #4
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut
    J'ai pu enfin tester !
    Donc la méthode avec un filter dans le fichier web.xml marche bien .

    Citation Envoyé par juridakus Voir le message

    Pratiquement moi je crée une interface que j'implémente dans chaque Bean. Elle est appellé dans mon implémentation du phaseListner, ainsi à chaque appel l'authentification est vérifiée sinon je fais une redirection vers la page de Login.

    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
     
    if (!isLoginOk))
    	{
    		FacesContext fctx = FacesContext.getCurrentInstance();
    		ExternalContext ectx = fctx.getExternalContext();
    		String url = ((HttpServletRequest) ectx.getRequest())
    		.getContextPath()
    		+ "/pages/page_de_login.jsf";	
    		try {
    			ectx.redirect(url);
    		} catch (IOException e) {
     
    		e.printStackTrace();
    		}
    	}
    C'est quoi ta méthode avec un "phase-listener" ?

    J'ai vu d'autres méthodes avec des "NavigationHandler" (???).

    En fait, c'est quoi la "bonne" méthode, ou plutôt quelle est la meilleur pratique ?


  5. #5
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    Citation Envoyé par kimausoleil Voir le message
    J'ai pu enfin tester !
    Donc la méthode avec un filter dans le fichier web.xml marche bien .
    C'est quoi ta méthode avec un "phase-listener" ?
    J'ai vu d'autres méthodes avec des "NavigationHandler" (???).
    En fait, c'est quoi la "bonne" méthode, ou plutôt quelle est la meilleur pratique ?
    Content que tu ais pu tester quelque chose qui marche. je ne saurai te dire laquelle choisir pour les bests Practices. De mon coté j'ai fais un listener qui implémente l'interface Listener par défaut de JSF pour pouvoir entre autres mettre du code de vérification d'authentification entre les phases. C'est aussi utile pour le logging. Les méthodes avec les NavigationHandler moi aussi j'ai pas encore implémenté cela.

  6. #6
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut Dur, dur...
    Décidément je n'arrive pas vraiment à m'en sortir...

    En fait le filter gère bien la redirection si la session expire.

    Mais dans le cas où j'essaie d'accéder à une page sans m'être loggué avant, elle s'affiche quand même...

    Comment dois-je faire ?

  7. #7
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    Si tu te débrouilles un peu en anglais voici un lien:
    http://www.jsfcentral.com/listings/A92000?link
    En fait c'est une implémentation du Listener comme je t'ai dis plus et dans l'afterPhase il teste que l'utilisateur n'est pas sur la page de login que la variable loggedIn du loginController est à false pour faire une redirection grâce au NavigationHandler vers la page de login via la règle "logout". c'est ok mais il y'a un bug qui survient si la session a expirée. Puisque tu gère l'expiration de la session déjà avec le filter. essaie donc d'implémenter ceci.
    Bonne chance

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

Discussions similaires

  1. [JSF] Durée des sessions
    Par bslota dans le forum JSF
    Réponses: 1
    Dernier message: 18/01/2006, 10h04
  2. [tomcat] gestion des sessions
    Par sebos63 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 12/10/2004, 14h25
  3. [Struts] Gestion de session
    Par Nuncyco dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2004, 11h11
  4. [ STRUTS ] [ SESSION ] Pb gestion de sessions
    Par LoulouFifi dans le forum Struts 1
    Réponses: 4
    Dernier message: 30/03/2004, 16h38
  5. [JSP] Gestion de sessions
    Par orisis dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/03/2004, 15h36

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