[Seaside] Session Problem

Sebastián Perez Escribano sebaspe at gmail.com
Thu Dec 4 16:57:55 UTC 2008

Hi list, I have a problem with the login session in my site. I'm using 
Seaside and Shore Components. The main component of the site has two 
divs, a menu to the left, and the main page to the right. On the menu I 
use anchors that on click show different components in the main page 
(via AJAX). The thing is that when the session expires, I need to go 
back to the login page. I've overridden the method #incomingRequest: to 
check if the session is active and redirect it to the login page if 
needed to. Here's the code to do that:

MySession >> incomingRequest: aRequest

 ^self checkIsActive
             ifTrue: [super incomingRequest: aRequest]
             ifFalse:  [self logOut: aRequest]]

MySession >> logOut: aRequest
   | wttHome |
  wttHome := self parent baseUrl asString.
 ^WAResponse redirectTo: wttHome

This works with the components in the main page, for example:  in the 
main div I have a component with a button. If I click on the button and 
the session isn't active, the session redirects to the log in component, 
cleaning all the page. _But when I click on the anchors in the left div 
(the menu) and the session isn't active,  the log-in component  is 
placed on the right div (the main component) and does not refresh all 
the page (the menu still shows). So in this case I end up with a menu on 
the left with anchors and the log-in component in the rigth, and i don't 
want the menu component showing in this case.

This is the method that is called when I click on an anchor in the left 
menu div.

WAMyLeftMenu >> updaterOn: html for: component
 "This is the method with problems"
 ^(html updater)
     id: 'mainComponent';
     callback: [:renderer | self showMainComponent: component on: renderer]

If the session  isn´t active, the callback is never called.

Anyone has any experience dealing with expired (via time-out or by code) 
sessions and how to reacting to it (redirecting, logging out, etc)?
Any help on this will be appreciated.

Cheers, Sebastian.

More information about the seaside mailing list