[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-2257) Raise a session expired and new session event on occurence

Jacob Orshalick (JIRA) jira-events at lists.jboss.org
Fri Nov 16 18:49:18 EST 2007


    [ http://jira.jboss.com/jira/browse/JBSEAM-2257?page=comments#action_12388057 ] 
            
Jacob Orshalick commented on JBSEAM-2257:
-----------------------------------------

It would be nice if the event was initiated after the RESTORE_VIEW once the conversation has been initialized.  This would allow the FacesMessages component to be used to easily add a message for user notification, i.e.

@Observes("org.jboss.seam.sessionExpired")
 public void sessionExpired(String message)
 {
         FacesMessages.instance().add("User session expired");
 }

The current workaround is described at:

http://solutionsfit.com/blog/2007/11/16/session-expired-messages-using-seam-security/

> Raise a session expired and new session event on occurence
> ----------------------------------------------------------
>
>                 Key: JBSEAM-2257
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-2257
>             Project: JBoss Seam
>          Issue Type: Feature Request
>          Components: Security
>    Affects Versions: 2.0.0.GA
>            Reporter: Jacob Orshalick
>            Priority: Minor
>
> You have to make some assumptions here, but you can basically notify the user when the server session has ended with the following in a PhaseListener:
> Code:
> @Observer("org.jboss.seam.beforePhase")
> public void beforePhase(PhaseEvent event)
> {
>   if(event.getPhaseId() == PhaseId.RESTORE_VIEW)
>   {
>     HttpServletRequest request =
>       (HttpServletRequest) FacesContext.getCurrentInstance()
>         .getExternalContext().getRequest();
>             
>     if(request.getRequestedSessionId() != null 
>            && request.getSession().isNew())
>        Events.instance().raiseEvent("org.jboss.seam.sessionExpired");
> ...	
> Based on general cookie settings this will raise the event when the user still has the browser window open, the http session expired, and the user tries to access the app. If the user closes and reopens the browser to start the application, the event will not be raised.  This of course makes the assumption that cookies expire when the browser session is ended (which is generally the case).
> The org.jboss.seam.newSession event would simply change the condition to:
>    if(request.getRequestedSessionId() == null 
>            && request.getSession().isNew())
>       Events.instance().raiseEvent("org.jboss.seam.newSession");
> This is generally useful for user notification on the login screen.  Please see the forum reference for more information.  Thanks.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list