# NAME
MojoX::Session - Session management for Mojo
# SYNOPSIS
my $session = MojoX::Session->new(
tx => $tx,
store => MojoX::Session::Store::Dbi->new(dbh => $dbh),
transport => MojoX::Session::Transport::Cookie->new,
ip_match => 1
);
# or
my $session = MojoX::Session->new(
tx => $tx,
store => [dbi => {dbh => $dbh}], # use MojoX::Session::Store::Dbi
transport => 'cookie', # this is by default
ip_match => 1
);
$session->create; # creates new session
$session->load; # tries to find session
$session->sid; # session id
$session->data('foo' => 'bar'); # set foo to bar
$session->data('foo'); # get foo value
$session->data('foo' => undef); # works
$session->clear('foo'); # delete foo from data
$session->flush; # writes session to the store
# DESCRIPTION
[MojoX::Session](
http://search.cpan.org/perldoc?MojoX::Session) is a session management for [Mojo](
http://search.cpan.org/perldoc?Mojo). Based on [CGI::Session](
http://search.cpan.org/perldoc?CGI::Session)
and [HTTP::Session](
http://search.cpan.org/perldoc?HTTP::Session) but without any dependencies except the core ones.
# ATTRIBUTES
[MojoX::Session](
http://search.cpan.org/perldoc?MojoX::Session) implements the following attributes.
## `tx`
Mojo::Transaction object
my $tx = $session->tx;
$tx = $session->tx(Mojo::Transaction->new);
## `store`
Store object
my $store = $session->store;
$session = $session->store(MojoX::Session::Store::Dbi->new(dbh => $dbh));
$session = $session->store(dbi => {dbh => $dbh});
## `transport`
Transport to find and store session id
my $transport = $session->transport;
$session
= $session->transport(MojoX::Session::Transport::Cookie->new);
$session = $session->transport('cookie'); # by default
## `ip_match`
Check if ip matches, default is 0
my $ip_match = $session->ip_match;
$ip_match = $session->ip_match(0);
## `expires_delta`
Seconds until session is considered expired
my $expires_delta = $session->expires_delta;
$expires_delta = $session->expires_delta(3600);
# METHODS
[MojoX::Session](
http://search.cpan.org/perldoc?MojoX::Session) inherits all methods from [Mojo::Base](
http://search.cpan.org/perldoc?Mojo::Base) and implements the
following new ones.
## `new`
my $session = MojoX::Session->new(...);
Returns new L<MojoX::Session> object.
## `create`
my $sid = $session->create;
$session->flush;
Creates new session. Puts sid into the transport. Call flush if you want to
store it.
## `load`
$session->load;
$session->load($sid);
Tries to load session from the store, gets sid from transport unless it is
provided. If sesssion is expired it will loaded also.
## `flush`
$session->flush;
Flush actually writes to the store in these situations:
\- new session was created (inserts it);
\- any value was changed (updates it)
\- session is expired (deletes it)
Returns the value from the corresponding store method call.
## `sid`
my $sid = $session->sid;
Returns session id.
## `data`
my $foo = $session->data('foo');
$session->data('foo' => 'bar');
$session->data('foo' => 'bar', 'bar' => 'foo');
$session->data('foo' => undef);
# or
my $foo = $session->data->{foo};
$session->data->{foo} = 'bar';
Get and set values to the session.
## `flash`
my $foo = $session->data('foo');
$session->data('foo' => 'bar');
$session->flash('foo'); # get foo and delete it from data
$session->data('foo'); # undef
Get value and delete it from data. Usefull when you want to store error messages
etc.
## `clear`
$session->clear('bar');
$session->clear;
$session->flush;
Clear session values. Delete only one value if argument is provided. Call flush
if you want to clear it in the store.
## `expires`
$session->expires;
$session->expires(123456789);
Get/set session expire time.
## `expire`
$session->expire;
$session->flush;
Force session to expire. Call flush if you want to remove it from the store.
## `is_expired`
Check if session is expired.
## `extend_expires`
Entend session expires time. Set it to current\_time + expires\_delta.
# SEE ALSO
[CGI::Session](
http://search.cpan.org/perldoc?CGI::Session), [HTTP::Session](
http://search.cpan.org/perldoc?HTTP::Session)
# AUTHOR
Viacheslav Tykhanovskyi, `
[email protected]`.
# CREDITS
Daniel Mascarenhas
David Davis
Maxim Vuets
Sergey Zasenko
William Ono
Yaroslav Korshak
Alex Hutton
Sergey Homenkow
# COPYRIGHT
Copyright (C) 2008-2013, Viacheslav Tykhanovskyi.
This program is free software, you can redistribute it and/or modify it under
the same terms as Perl 5.10.