FacesContext.getExternalContext().getRequest should point you towards
the servlet request.

Werner


Georg Füchsle schrieb:
> Hallo all,
> 
> when a session of an user timed out I display a Website telling  'Your
> Session expired; please login again!".
> Now I have to distinguish some 'loginType' of the user.
> If the user initially logged on by ldap i have to redirect him to
> another site as if he logged in by internal  mechanisms.
> 
> So I have to access the user's logintype data after the session timed out.
> 
> I was thinking on a solution without using cookies:
> To do so, I put the loginType data to a hidden input field on the
> website. I thought that this data is not lost doing a request after
> session timeout.
> 
> Unfortunately at the restoreview-Phase the data was not already
> written to the bean.
> 
> But I think: in the request there will be sent also the information
> from the old (session timed out) page.  So I  also should be able to
> read the value of this input-field  'loginType'. Is there any
> possibility to read from the request?
> 
> Can anybody tell me if I am right, and tell me how to read this data?
> 
> I use JSF Tomahawk and Facelets.
> 
> 
> Thanks!
> 
> 
> 
> Here my input-text:
> 
> 
> 
> <t:inputText  value="#{mbUser.loginType}"
>               id="loginType"
>               immediate="true"
>               style="display:none;visibility:hidden;"/>               
> 
> 
> 
> 
> 
> here my PhaseListener:
> 
> 
> class PhaseListener
> {
> 
>       public void beforePhase(PhaseEvent event)
>       {
>               if(event.getPhaseId() == PhaseId.RESTORE_VIEW)
>               {       
>                       /*
>                       before processing any request, I control if the User is 
> logged in
> to the application:
>                       */
>                       UserBean user = JsfUtils.getUserBean();
>                       
>                       if(!user.loggedIn())
>                       {
>                               /*
>                               User is not logged in!
>                               */      
>                               ExternalContext extCtx = 
> event.getFacesContext().getExternalContext();
>                               HttpServletRequest request = 
> (HttpServletRequest) extCtx.getRequest();
>                               String reqUri = request.getRequestURI();
>                       
>                               if(startOrErrorPageIsCalled(reqUri))
>                               {
>                                       /*
>                                       Users that are not logged in are only 
> allowed to see the
> login-page or the error pages...
>                                       */
>                                       return;
>                               }
>                               else
>                               {
>                                       /*
>                                       Users that is not logged in tried to 
> request the application.
>                                       I want to redirect him to a page 
> 'sessionExpired' depending on
> his former loginType; this loginType I want to save on the website;
>                                       */
>                                       
>                                       // HERE THE LOGINTYPE WAS NOT reset to 
> the Bean. is there any
> other possibility to read this value from the request?
>                                       if(user.getLoginType() == 1)
>                                       {
>                                               
> event.getFacesContext().getExternalContext().redirect(JsfUtils.getKontextRoot()
> + "sessionExpired.jsf");
>                                       }
>                                       else
>                                       {
>                                               // redirect him to another 
> website
>                                       }
>                               }
>                       }
>                       
>               }
>       }
> 
> 
> }
> 

Reply via email to