1 package Plack::Session::State;
5 use Plack::Util::Accessor qw[
11 my ($class, %params) = @_;
13 $params{'_expired'} ||= +{};
14 $params{'session_key'} ||= 'plack_session';
15 $params{'sid_generator'} ||= sub {
17 Digest::SHA1::sha1_hex(rand() . $$ . {} . time)
20 bless { %params } => $class;
23 sub expire_session_id {
25 $self->{'_expired'}->{ $id }++;
28 sub is_session_expired {
30 exists $self->{'_expired'}->{ $id }
35 return unless $id && not $self->is_session_expired( $id );
40 my ($self, $request) = @_;
41 $self->extract( $request )
43 $self->generate( $request )
47 my ($self, $request) = @_;
48 $self->check_expired( $request->param( $self->session_key ) );
53 $self->sid_generator->( @_ );
58 my ($self, $id, $response) = @_;
70 Plack::Session::State - Basic parameter-based session state
78 =item B<new ( %params )>
82 =item B<sid_generator>
88 =item B<get_session_id ( $request )>
90 =item B<extract ( $request )>
92 =item B<generate ( $request )>
94 =item B<finalize ( $session_id, $response )>
100 =item B<expire_session_id ( $id )>
102 =item B<check_expired ( $id )>
108 All complex software has bugs lurking in it, and this module is no
109 exception. If you find a bug please either email me, or add the bug
114 Stevan Little E<lt>stevan.little@iinteractive.comE<gt>
116 =head1 COPYRIGHT AND LICENSE
118 Copyright 2009 Infinity Interactive, Inc.
120 L<http://www.iinteractive.com>
122 This library is free software; you can redistribute it and/or modify
123 it under the same terms as Perl itself.