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
}
}
}
}
}
}