Hi all
I converted my Dancer app to Dancer2 and have no issues when using Dancer2::Session::Simple. Sessions persist across routes.
However, on switching to Dancer2::Session::Memcached, after setting the session via the /login route, it's not accessible via another route. I know that the Memcached instance is functional, having tested it using a regular Perl script with Cache::Memcached.
Any ideas? I don't see any errors from Dancer.
Details:
Dancer2 (0.03)
cd /srv/web/app1/core/
Tokyo Cabinet 1.4.48
Tokyo Tyrant 1.1.41
setuidgid web1 ttserver -host /srv/web/app1/sock/sessions.sock -port 0 /srv/web/app1/data/casket.tch
pertinent part of config.yml
logger: "console"
log: "core"
warnings: 1
show_errors: 1
session: Memcached
engines:
session:
Memcached:
memcached_servers: /srv/web/app1/sock/sessions.sock
This works:
post '/login' => sub {
if (authen(params->{'user'}, params->{'pass'}) {
session 'user' => params->{'user'};
return 'user = ' . session('user');
}
else {
return redirect '/login';
}
}
These 2 routes always end up back at /login:
post '/login' => sub {
if (authen(params->{'user'},params->{'pass'}) {
session 'user' => params->{'user'};
return redirect '/dashboard';
}
else {
return redirect '/login';
}
}
get '/dashboard' => sub {
if (not session('user')) {
return redirect '/login';
}
# do something
}
Even replacing the last route with the following, leaves an empty session (i.e. user is BLANK).
get '/dashboard' => sub {
return 'user is ' . session('user');
}
Dale