Ark
view release on metacpan or search on metacpan
lib/Ark/Plugin/Session/Backend.pm view on Meta::CPAN
is => 'rw',
isa => 'Maybe[HashRef]',
lazy => 1,
default => sub {
my $self = shift;
return unless $self->session_id;
$self->get_session_data( $self->session_id );
},
);
has session_updated => (
is => 'rw',
isa => 'Bool',
default => 0,
);
has uuid_model => (
is => 'rw',
isa => 'Str',
);
lib/Ark/Plugin/Session/Backend.pm view on Meta::CPAN
isa => "Int",
default => 0,
);
has finalized => (
is => 'rw',
isa => 'Bool',
default => 0,
);
after $_ => sub { shift->session_updated(1); }
for qw/get set remove/;
before $_ => sub {
die "session is already finalized. can't call set or remove method" if shift->finalized;
} for qw/set remove/;
no Ark;
sub get {
my ($self, $key) = @_;
lib/Ark/Plugin/Session/Backend.pm view on Meta::CPAN
# Store
sub get_session_data { }
sub set_session_data { }
sub remove_session_data { }
sub finalize_session {
my ($self, $res) = @_;
if ($self->session_updated and my $sid = $self->session_id) {
$self->set_session_data( $sid, $self->session_data );
}
$self->finalized(1);
}
1;
lib/Ark/Plugin/Session/State/URI.pm view on Meta::CPAN
$next->(@_);
};
around finalize_session => sub {
my $next = shift;
my ($self, $res) = @_;
unless ($self->uri_session_disabled) {
if ($self->uri_verify_ua) {
# store ua
if ($self->session_updated) {
$self->set( __ua => $self->context->request->user_agent );
}
}
}
$next->(@_);
};
sub BUILD {
my ($self) = @_;
t/plugin_session.t view on Meta::CPAN
is $res->content, 1, 'request ok';
my ($sid) = $res->header('Set-Cookie') =~ /testapp_session=(\w+)/;
ok $sid, 'sid ok';
$res = request(GET => '/regen');
is $res->content, 'regenerated', 'sid regenerated';
my ($new_sid) = $res->header('Set-Cookie') =~ /testapp_session=(\w+)/;
is get('/incr'), 2, 'session continued ok';
isnt $sid, $new_sid, 'but session_id updated ok';
is get('/regen_and_incr'), 3, 'modified session data and regenerated sid on the same request ok';
# old sid is now removed
my $request = HTTP::Request->new(GET => '/incr');
$request->header( Cookie => "testapp_session=$sid" );
is request($request)->content, 1, 'old session already expired';
}
done_testing;
( run in 0.299 second using v1.01-cache-2.11-cpan-2b0bae70ee8 )