[dancer-users] Dancer2: session->destroy fails
David Golden
xdg at xdg.me
Tue Apr 9 11:46:17 BST 2013
The session paradigm changed in D2. Session objects are now just data
objects, so you have to destroy them via the context object, which
dispatches to the configured session engine and does some other
necessary bookkeeping:
context->destroy_session
-- David
On Tue, Apr 9, 2013 at 6:36 AM, Dale Gallagher <dale.gallagher at gmail.com> wrote:
> Hi
>
> Calling session->destroy fails with the following.
>
>
> Can't locate object method "destroy" via package "Dancer2::Core::Session" at
> /srv/web/app/lib/app.pm line 36.
>
>
> config.yml:
>
> session: Simple
>
> /srv/web/app/lib/app.pm:
>
> package app;
> use Dancer2 ':syntax';
> use Dancer2::Plugin::Ajax;
> use Authen::Simple::Passwd;
>
>
> ...
> ..
>
> get '/logout' => sub {
>
> session->destroy;
>
> redirect '/login';
>
> }
>
> I even tried:
>
> my $id = session->id;
>
> session->delete($id);
>
> but, even though it doesn't throw an error, it doesn't delete the session
> and other routes are served.
>
> So far, at the top of app.pm, I have:
>
>
> hook before => sub {
> if (request->path_info !~ m{^/login}) {
> if (session('user') && session('time')) {
> my $time_now = time;
> if ($time_now - session('time') < config->{'session_expire'}) {
>
> session 'time' => time;
> }
> else {
> return redirect '/logout?msg=session_expired&path=' .
> request->path_info;
> }
> }
> else {
> return redirect '/login';
>
> }
> }
> };
>
>
> I'm stumped, as, apart from the above snippet, and the Dancer2 use lines,
> the app works under Dancer1.
>
> Any pointers would be appreciated.
>
> Thanks
>
> Dale
>
>
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>
--
David Golden <xdg at xdg.me>
Take back your inbox! → http://www.bunchmail.com/
Twitter/IRC: @xdg
More information about the dancer-users
mailing list