[Catalyst] Session expiry per user

Jonathan Rockway jon at jrock.us
Fri Mar 14 13:40:31 GMT 2008


* On Fri, Mar 14 2008, Alexandre Jousset wrote:
> To set the longer expiry time, I try:
>
> $c->config->{session}{expires} = 31536000 if $c->req->param('remember_me');

You can't write to $c->config after setup runs.  It just doesn't make
sense.

Anyway, config->{session}{expires} is only consulted at session creation
time.  If you need to change the expiration later, you need to do
something else.

This might work:

  sub MyApp::calculate_extended_session_expires {
      my ($c, $prev) = @_;
      if($c->session->{remember_me}){
          return time + 31536000;
      }
      else {
          return $c->NEXT::calculate_extended_session_expires($prev);
      }
   }

And then

   $c->session->{remember_me} = 1;
   $c->calculate_extended_session_expires;

Untested.

Regards,
Jonathan Rockway

-- 
print just => another => perl => hacker => if $,=$"



More information about the Catalyst mailing list