Plack-Middleware-Session
view release on metacpan or search on metacpan
lib/Plack/Session/State.pm view on Meta::CPAN
package Plack::Session::State;
use strict;
use warnings;
our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use Crypt::SysRandom ();
# RECOMMEND PREREQ: Crypt::SysRandom::XS
use Plack::Request;
use Plack::Util::Accessor qw[
session_key
sid_generator
sid_validator
];
sub new {
my ($class, %params) = @_;
$params{'session_key'} ||= 'plack_session';
$params{'sid_generator'} ||= sub {
unpack('H*', Crypt::SysRandom::random_bytes(20))
};
$params{'sid_validator'} ||= qr/\A[0-9a-f]{40}\Z/;
bless { %params } => $class;
}
sub expire_session_id {
my ($self, $id, $res) = @_;
}
sub validate_session_id {
my ($self, $id) = @_;
$id =~ $self->sid_validator;
}
sub get_session_id {
my ($self, $env) = @_;
return Plack::Request->new($env)->param( $self->session_key );
}
sub extract {
my ($self, $env) = @_;
my $id = $self->get_session_id( $env );
return unless defined $id;
return $id if $self->validate_session_id( $id );
return;
}
sub generate {
my $self = shift;
$self->sid_generator->( @_ );
}
sub finalize {
my ($self, $id, $res, $options) = @_;
();
}
1;
__END__
=pod
=head1 NAME
Plack::Session::State - Basic parameter-based session state
=head1 SYNOPSIS
use Plack::Builder;
use Plack::Middleware::Session;
use Plack::Session::State;
my $app = sub {
return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello Foo' ] ];
};
builder {
enable 'Session',
state => Plack::Session::State->new;
( run in 3.024 seconds using v1.01-cache-2.11-cpan-0bb4e1dffa6 )