NAME

Mojolicious::Sessions - Signed cookie based session manager

SYNOPSIS

use Mojolicious::Sessions;

my $sessions = Mojolicious::Sessions->new;
$sessions->cookie_name('myapp');
$sessions->default_expiration(86400);

DESCRIPTION

Mojolicious::Sessions manages simple signed cookie based sessions for Mojolicious. All data gets serialized with Mojo::JSON and stored Base64 encoded on the client-side, but is protected from unwanted changes with a HMAC-SHA1 signature.

ATTRIBUTES

Mojolicious::Sessions implements the following attributes.

my $domain = $sessions->cookie_domain;
$sessions  = $sessions->cookie_domain('.example.com');

Domain for session cookies, not defined by default.

my $name  = $sessions->cookie_name;
$sessions = $sessions->cookie_name('session');

Name for session cookies, defaults to mojolicious.

my $path  = $sessions->cookie_path;
$sessions = $sessions->cookie_path('/foo');

Path for session cookies, defaults to /.

default_expiration

my $time  = $sessions->default_expiration;
$sessions = $sessions->default_expiration(3600);

Default time for sessions to expire in seconds from now, defaults to 3600. The expiration timeout gets refreshed for every request. Setting the value to 0 will allow sessions to persist until the browser window is closed, this can have security implications though. For more control you can also use the expiration and expires session values.

# Expiration date in seconds from now (persists between requests)
$c->session(expiration => 604800);

# Expiration date as absolute epoch time (only valid for one request)
$c->session(expires => time + 604800);

# Delete whole session by setting an expiration date in the past
$c->session(expires => 1);

deserialize

my $cb    = $sessions->deserialize;
$sessions = $sessions->deserialize(sub {...});

A callback used to deserialize sessions, defaults to "j" in Mojo::JSON.

$sessions->deserialize(sub {
  my $bytes = shift;
  return {};
});

secure

my $bool  = $sessions->secure;
$sessions = $sessions->secure($bool);

Set the secure flag on all session cookies, so that browsers send them only over HTTPS connections.

serialize

my $cb    = $sessions->serialize;
$sessions = $sessions->serialize(sub {...});

A callback used to serialize sessions, defaults to "encode_json" in Mojo::JSON.

$sessions->serialize(sub {
  my $hash = shift;
  return '';
});

METHODS

Mojolicious::Sessions inherits all methods from Mojo::Base and implements the following new ones.

load

$sessions->load(Mojolicious::Controller->new);

Load session data from signed cookie.

store

$sessions->store(Mojolicious::Controller->new);

Store session data in signed cookie.

SEE ALSO

Mojolicious, Mojolicious::Guides, http://mojolicio.us.