Apache-AppSamurai

 view release on metacpan or  search on metacpan

lib/Apache/AppSamurai/Session.pm  view on Meta::CPAN

    
    if (!exists $incl->{$ser}) {
        eval "require $ser" || die $@;
        eval '$incl->{$ser}->[0] = \&' . $ser . '::serialize'   || die $@;
        eval '$incl->{$ser}->[1] = \&' . $ser . '::unserialize' || die $@;
    }
    
    $self->{object_store} = new $store $self;
    $self->{lock_manager} = new $lock  $self;
    $self->{generate}     = $incl->{$gen}->[0];
    $self->{validate}     = $incl->{$gen}->[1];
    $self->{serialize}    = $incl->{$ser}->[0];
    $self->{unserialize}  = $incl->{$ser}->[1];

    return $self;
}


1; # End of Apache::AppSamurai::Session

__END__

=head1 NAME

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

=head1 SYNOPSIS

 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!

=head1 DESCRIPTION

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 I<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.)

=head1 USAGE

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

=over 4

=item 1)

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

    Store => 'File'

=item 2)

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

    Serialize => 'AppSamurai/CryptBase64'

=item 3)

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

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

=back

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 
L<Apache::Session> for more general session storage information.

=head1 SEE ALSO

L<Apache::AppSamurai>, L<Apache::Session>

=head1 AUTHOR

Paul M. Hirsch, C<< <paul at voltagenoir.org> >>



( run in 1.865 second using v1.01-cache-2.11-cpan-39bf76dae61 )