NAME
Plack::Middleware::Session::Simple - Make Session Simple
SYNOPSIS
use Plack::Builder;
use Cache::Memcached::Fast;
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-CookieIf 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>