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
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?
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>
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 :
Si vous avez des idées je suis preneur.
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; }
Partager