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 :

Login + redirection


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Par défaut Login + redirection
    Salut,

    je travaille sur JSF 1.2 avec NetBean. Je souhaiterai faire une page de login avec redirection vers la page initialement demandée par l'utilisateur. C'est à dire s'il me demande la page toto.jsp et qu'il n'est pas authentifié, il est redirigé vers login.jsp. Il s'authentifie et en validant il est redirigé vers toto.jsp et non vers une autre page.

    Pour le moment j'utilise un phaselistener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <lifecycle>
            <phase-listener>fr.insa.rennes.pelias.pexecutor.login.RedirectionLogin</phase-listener>
        </lifecycle>
    Mais lorsque je valide mon authentification il me redirige toujours vers la même page (celle qui est définie dans les règles de navigation). Comment serait il possible de conserver l'url initialement demandée puis d'effectuer une redirection vers celle ci après authentification?

    J'ai essayé de récupérer l'url complète dans mon phase listener mais je n'y arrive pas. Je récupère au mieux le nom de la page (avec e.getFacesContext().getViewRoot().getViewId(); ) mais pas les paramètres passés via l'url or j'ai un paramètre à récupérer (cette map reste null : FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); ).

    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
    public class RedirectionLogin implements javax.faces.event.PhaseListener {
        /**
         * Redirection si l'utilisateur n'est pas authentifié
         * Voir lifecycle dans faces-config
         * @param e
         */
    	public void afterPhase(javax.faces.event.PhaseEvent e) {
            FacesContext context = e.getFacesContext();
            ApplicationBean1 app = (ApplicationBean1) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("ApplicationBean1");
            if(app == null){
                FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("ApplicationBean1", new ApplicationBean1());
            }
                SessionBean1 sessionBean = (SessionBean1) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("SessionBean1");
                try {
                        String viewId = context.getViewRoot().getViewId();
                        if((sessionBean!=null) && (!sessionBean.getLog()) && !("/Login.jsp".equals(viewId))){
                            FacesContext.getCurrentInstance().getExternalContext().redirect("Login.jsp");
                        }
                        if((sessionBean==null) && !("/Login.jsp".equals(viewId))){
                            FacesContext.getCurrentInstance().getExternalContext().redirect("Login.jsp");
                        }
                    } catch (IOException e1) {}
        }
                 public void beforePhase(javax.faces.event.PhaseEvent e) {
     
    	}
     
    	public javax.faces.event.PhaseId getPhaseId() {
    		return javax.faces.event.PhaseId.ANY_PHASE;
    	}
    Si vous avez des idées je suis preneur.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 36
    Par défaut
    Salut,

    il faut changer ton faces-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
    16
    17
     
        <managed-bean>
            <managed-bean-name>PageLogin</managed-bean-name>
            <managed-bean-class>monPackage.PageLogin</managed-bean-class>
            <managed-bean-scope>request</managed-bean-scope>
        </managed-bean>
        <navigation-rule>
            <from-view-id>/PageLogin.jsp</from-view-id>
            <navigation-case>
                <from-outcome>case1</from-outcome>
                <to-view-id>/LoginOK.jsp</to-view-id>
            </navigation-case>
            <navigation-case>
                <from-outcome>case2</from-outcome>
                <to-view-id>/LoginNonOK.jsp</to-view-id>
            </navigation-case>
        </navigation-rule>
    et dans ton PageLogin.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public String buttonValider_action() {
        SessionBean1 sessionBean = (SessionBean1) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("SessionBean1");
     
        if (sessionBean!=null) return "case1";
        else return "case2";
    }

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Par défaut
    Avec le code que tu m'indiques, je serais forcément redirigé vers LoginOK.jsp en cas d'authentification réussie. Or je veux que se soit la page que l'utilisateur a tenté d'atteindre avant d'être redirigé vers la page login.jsp qui soit la page vers laquelle il sera redirigé après authentification. Autrement dit, je veux une redirection dynamique en fonction de la requète de l'utlisateur. Je ne pense pas que les règles de navigation puissent faire celà.

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    Bonjour,
    Tu doit utiliser JAAS.
    Voici le tutorial : http://beuss.developpez.com/tutoriel...on/formulaire/

    Bon travail.

Discussions similaires

  1. Login + Redirect sans perdre de données
    Par Erakis dans le forum ASP.NET
    Réponses: 8
    Dernier message: 04/03/2009, 16h01
  2. Réponses: 1
    Dernier message: 04/05/2007, 15h54
  3. Redirection après login
    Par dolf13 dans le forum Langage
    Réponses: 1
    Dernier message: 24/05/2006, 03h13
  4. [Portlet/Jsf] Login et redirection
    Par CtHu dans le forum JSF
    Réponses: 3
    Dernier message: 10/04/2006, 12h38
  5. [VB.NET] Durée vie var session vs redirect page login
    Par fabthebreton dans le forum ASP.NET
    Réponses: 5
    Dernier message: 16/12/2004, 17h35

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