I see space for a plugin here. Unless I'm overlooking something, you need a way to temporarily set a configuration option and have it removed at the end of the request: # ... in your code volatile session_expires => '...'; # whatever the business logic dictates # ... in the plugin, proof of concept my %original_for; register volatile => sub { my ($name, $value) = @_; my $config = config(); if (! exists $original_for{$name}) { $original_for{$name} = exists($config->{$name}) ? [ $config->{$name} ] : undef; } set $name, $value; }; after sub { # restore original values my $config = config(); while (my ($name, $value) = each %original_for) { delete $config->{$name}; $config->{$name} = $value->[0] if ref $value; } %original_for = (); }; Of course the restoration mechanism above somewhat breaks encapsulation for config/set/setting. Could we possibly use only Dancer::Config::setting? The tricky part is handling the "no previous value for this configuration" case. And of course this does not play well with threads (but I wonder if Dancer plays nice with them at all). Cheers, Flavio. On Tue, Mar 15, 2011 at 12:34 AM, Brian E. Lozier <brian@massassi.com>wrote:
Hmm, I dug into the actual code and found this in Dancer::Session::Abstract:
if (my $expires = setting('session_expires')) { $cookie{expires} = Dancer::Cookie::_epoch_to_gmtstring(time + $expires); }
It appears I can have a global timeout option in the settings. This is useful although I think I need something a bit more flexible. I need to be able to choose a session time out based on user input. For example, if they check "remember me" I want the session to expire in 2 weeks, otherwise just use a session cookie.
The write_session_id method is specifically mentioned as something I should not attempt to overload. Does anyone have any ideas about how I can have a dynamic session timeout?
Thanks again, Brian
On Mon, Mar 14, 2011 at 4:27 PM, Brian E. Lozier <brian@massassi.com> wrote:
When I use Dancer::Session::YAML to create a session, the session cookie is set to expire when the browser closes. Is there a way for me to set an expire time for the session cookie? I looked in Dancer::Session, Dancer::Session::YAML, Dancer::Cookbook, and Dancer::Session::Abstract but didn't see anything (maybe I missed it).
Thanks, Brian
_______________________________________________ Dancer-users mailing list Dancer-users@perldancer.org http://www.backup-manager.org/cgi-bin/listinfo/dancer-users