Apache::AppSamurai::Session - Apache::AppSamurai wrapper for Apache::Session


 use Apache::AppSamurai::Session;
 # Equivalent to Apache::Session::Flex use:

 tie %hash, 'Apache::AppSamurai::Session', $id, {
    Store     => 'DB_File',
    Lock      => 'Null',
    Generate  => 'MD5',
    Serialize => 'Storable'
 # Postgress backend with AppSamurai HMAC-SHA265 generator and
 # AES (Rijndael) encrypting serializer.

 tie %hash, 'Apache::AppSamurai::Session', $id, {
    Store     => 'Postgress',
    Lock      => 'Null',
    Generate  => 'AppSamurai/HMAC_SHA',
    Serialize => 'AppSamurai/CryptBase64'
 # Wacky setup with imaginary Thinger::Thing::File storage module
 # and very real Apache::AppSamurai::Session::Serialize::CryptBase64
 # serializer.  (This shows the alternate module syntaxes.)

 tie %hash 'Apache::AppSamurai::Session', $id, {
    Store     => 'Thinger::Thing::File',
    Lock      => 'Null',
    Generate  => 'Ranom::Garbage',
    Serialize => 'AppSamurai/CryptBase64'

 # you decide!


This module is a overload of Apache::Session which allows you to specify the backing store, locking scheme, ID generator, and data serializer at runtime. You do this by passing arguments in the usual Apache::Session style (see SYNOPSIS). You may use any of the modules included in this distribution, or a module of your own making.

In addition to the standard Apache::Session setup, this module allows for using modules from within of the Apache::AppSamurai::Session tree by prefixing with AppSamurai/, or using any visible Perl module by supplying its full module name. (Whatever the module, it still must meet standard Apache::Session interface functionality.)


You pass the modules you want to use as arguments to the constructor. There are three ways to point to a module:


Specify the Apache::Session name. For instance, for Apache::Session::Storage::File, you would use:

    Store => 'File'

Specify a name under the Apache::AppSamurai::Session tree. For instance, for Apache::AppSamurai::Session::Serialize::CryptBase64, you would use:

    Serialize => 'AppSamurai/CryptBase64'

Specify the full Perl module name. For instance, for Junk::Thing::Monster to be the session generator:

    Generate => 'Junk::Thing::Monster'

In addition to the arguments needed by this module, you must provide whatever arguments are expected by the backing store and lock manager that you are using. Please see the documentation for those modules, and Apache::Session for more general session storage information.


Apache::AppSamurai, Apache::Session


Paul M. Hirsch, <paul at>


See Apache::AppSamurai for information on bug submission and tracking.


See Apache::AppSamurai for support information.


This module is based partially on code written by Jeffrey William Baker <> and the Apache::Session authors.


Copyright 2008 Paul M. Hirsch, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.