NAME
Mojolicious::Plugin::WWWSession - Use WWWW::Session with Mojolicious
VERSION
Version 0.03
SYNOPSIS
This module allows you to overwrite the standard Mojolicious session with a WWW::Session object and enjoy all the goodies it provides
Example :
Storage backends
You can use one or more of the fallowing backends :
File storage
In you apllication module add the fallowing lines
use Mojolicious::Plugin::WWWSession;
sub startup {
...
#Overwrite session
$self->plugin( WWWSession => { storage => [File => {path => '.'}] } );
...
}
See WWW::Session::Storage::File for more details
Database storage
In you apllication module add the fallowing lines
use Mojolicious::Plugin::WWWSession;
sub startup {
...
#Overwrite session
$self->plugin( WWWSession => { storage => [ MySQL => {
dbh => $dbh,
table => 'sessions',
fields => {
sid => 'session_id',
expires => 'expires',
data => 'data'
}
]
} );
...
}
The "fields" hasref contains the mapping of session internal data to the column names from MySQL. The keys are the session fields ("sid","expires" and "data") and must all be present.
The MySQL types of the columns should be :
sid => varchar(32)
expires => DATETIME or TIMESTAMP
data => text
See WWW::Session::Storage::MySQL for more details
Memcached storage
In you apllication module add the fallowing lines
use Mojolicious::Plugin::WWWSession;
sub startup {
...
#Overwrite session
$self->plugin( WWWSession => { storage => ['Memcached' => {servers => ['127.0.0.1:11211']}] } );
...
}
See WWW::Session::Storage::Memcached for more details
Using the session
Settings values
There are two ways you can save a value on the session :
$session->set('user',$user);
or
$session->user($user);
If the requested field ("user" in the example above) already exists it will be assigned the new value, if it doesn't it will be added.
When you set a value for a field it will be validated first (see setup_field() ). If the value doesn't pass validation the field will keep it's old value and the set method will return 0. If everything goes well the set method will return 1.
Retrieving values
my $user = $session->get('user');
or
my $user = $session->user();
If the requested field ("user" in the example above) already exists it will return it's value, otherwise will return undef
Possible options for the plugin
Here is an exmple containing the options you can pass to the plugin:
{
storage => [ 'File' => { path => '/tmp/sessions'},
'Memcached' => { servers => ['127.0.0.1'] }
],
serialization => 'JSON',
expires => 3600,
fields => {
user => {
inflate => sub { return Some::Package->new( $_[0] ) },
deflate => sub { $_[0]->id() },
}
age => {
filter => [21..99],
}
}
1
See WWW:Session for more details on possible options and on how you can use the session
If you use the "Storable" serialization engine you can store objects in the session. Also multiple session storage backends can be used simultaneously
METHODS
register
Called by Mojo when you register the plugin
AUTHOR
Gligan Calin Horea, <gliganh at gmail.com>
BUGS
Please report any bugs or feature requests to bug-mojolicious-plugin-wwwsession at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Mojolicious-Plugin-WWWSession. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Mojolicious::Plugin::WWWSession
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Mojolicious-Plugin-WWWSession
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
LICENSE AND COPYRIGHT
Copyright 2012 Gligan Calin Horea.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.