Bonjour,
j'ai un petit soucis sur une appli web qui tourne sur tomcat 5.5 et qui utilise JSF 1.1 + Tomahawk.
J'utilise un PhaseLister pour déterminer si l'utilisateur est loggé ou pas.
S'il est loggé : j'envoie un "loginSucess" dans le NavigationHandler
Sinon : j'envoie un "logout" qui invalide totalement la session et redirige vers la page de login.
Code :
- public void afterPhase(PhaseEvent event) {
- FacesContext fc = event.getFacesContext();
- HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
- // Check to see if they are on the login page.
- boolean loginPage = fc.getViewRoot().getViewId().lastIndexOf("login" ) > -1 ? true : false;
- ContextBacker ctx=(ContextBacker) fc.getApplication().getVariableResolver().resolveVariable(fc, "contextBacker" );
- boolean loggedIn = "loginSuccess".equals(ctx.authenticate()) ? true : false;
- if (!loginPage && !loggedIn) {
- NavigationHandler nh = fc.getApplication().getNavigationHandler();
- //SessionUtil.getSession().invalidate();
- nh.handleNavigation(fc, null, "logout" );
- } else if (loginPage && loggedIn) {
- NavigationHandler nh = fc.getApplication().getNavigationHandler();
- //SessionUtil.getSession().invalidate();
- nh.handleNavigation(fc, null, "loginSuccess" );
- }
- }
|
ça fonctionne presque...Mais le problème, c'est que si je dispose d'une session active (avec le LoginBean présent dans le contexte), que j'ouvre un nouvel onglet, et que je saisis l'url de la racine de mon application dans le browser, la page souhaitée s'affiche bien, mais le menu ne s'affiche pas...
Alors que si je saisis l'url complète de la page, le menu se charge bien.
Vous auriez une idée, parce que là, je ne vois pas...
Merci d'avance.
edit : 'tain de touche tab
edit_2 : le menu est un jscookMenu, du framework Tomahawk
Message édité par lezioul le 09-03-2009 à 18:01:07