NAME
Plack::Middleware::Session::Simple - Make Session Simple
SYNOPSIS
use
Plack::Builder;
my
$app
=
sub
{
my
$env
=
shift
;
my
$counter
=
$env
->{
'psgix.session'
}->{counter}++;
[200,[], [
"counter => $counter"
]];
};
builder {
enable
'Session::Simple'
,
store
=> Cache::Memcached::Fast::Safe->new({
servers
=>[..]}),
cookie_name
=>
'myapp_session'
;
$app
};
DESCRIPTION
Plack::Middleware::Session::Simple is a yet another session management module. This middleware has compatibility with Plack::Middleware::Session by supporting psgix.session and psgi.session.options. You can reduce unnecessary accessing to store and Set-Cookie header.
This module uses Cookie to keep session state. does not support URI based session state.
OPTIONS
- store
-
object instance that has get, set, and remove methods.
-
This is the name of the session key, it defaults to 'simple_session'.
- keep_empty
-
If disabled, Plack::Middleware::Session::Simple does not output Set-Cookie header and store session until session are used. You can reduce Set-Cookie header and access to session store that is not required. (default: true/enabled)
builder {
enable
'Session::Simple'
,
store
=> Cache::Memcached::Fast::Safe->new({
servers
=>[..]}),
cookie_name
=>
'myapp_session'
,
keep_empty
=> 0;
mount
'/'
=>
sub
{
my
$env
=
shift
;
[200,[], [
"ok"
]];
},
mount
'/login'
=>
sub
{
my
$env
=
shift
;
$env
->{
'psgix.session'
}->{user} =
'session user'
[200,[], [
"login"
]];
},
};
my
$res
=
$app
->(req_to_psgi(GET
"/"
));
#res does not have Set-Cookie
my
$res
=
$app
->(req_to_psgi(GET
"/login"
));
#res has Set-Cookie
If you have a plan to use session_id as csrf token, you must not disable keep_empty.
- path
-
Path of the cookie, this defaults to "/";
- domain
-
Domain of the cookie, if nothing is supplied then it will not be included in the cookie.
- expires
-
Cookie's expires date time. several formats are supported. see Cookie::Baker for details. if nothing is supplied then it will not be included in the cookie, which means the session expires per browser session.
- secure
-
Secure flag for the cookie, if nothing is supplied then it will not be included in the cookie.
- httponly
-
HttpOnly flag for the cookie, if nothing is supplied then it will not be included in the cookie.
- sid_generator
-
CodeRef that used to generate unique session ids, by default it uses SHA1
- sid_validator
-
Regexp that used to validate session id in Cookie
- serializer
-
serialize,deserialize method. Optional. This is useful with Cache::FastMmap
my
$cfm
= Cache::FastMmap->new(
raw_values
=> 1);
my
$decoder
= Sereal::Decoder->new();
my
$encoder
= Sereal::Encoder->new();
builder {
enable
'Session::Simple'
,
store
=>
$fm
,
serializer
=> [
sub
{
$encoder
->encode(
$_
[0]) },
sub
{
$decoder
->decode(
$_
[0]) } ],
$app
;
};
LICENSE
Copyright (C) Masahiro Nagano.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Masahiro Nagano <kazeburo@gmail.com>