Plack::Session::Store::DBI(3pm)

Plack::Session::Store::DBI3pm

Dbi-based session store

Usage

  use Plack::Builder;
  use Plack::Middleware::Session;
  use Plack::Session::Store::DBI;
  my $app = sub {
      return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello Foo' ] ];
  };
  builder {
      enable 'Session',
          store => Plack::Session::Store::DBI->new(
              dbh => DBI->connect( @connect_args )
          );
      $app;
  };
  # set get_dbh callback for ondemand
  builder {
      enable 'Session',
          store => Plack::Session::Store::DBI->new(
              get_dbh => sub { DBI->connect( @connect_args ) }
          );
      $app;
  };
  
  # with custom serializer/deserializer
  builder {
      enable 'Session',
          store => Plack::Session::Store::DBI->new(
              dbh => DBI->connect( @connect_args )
              # YAML takes its args in the opposite order
              serializer   => sub { YAML::DumpFile( reverse @_ ) },
              deserializer => sub { YAML::LoadFile( @_ ) },
          );
      $app;
  };
  # use custom session table name
  builder {
      enable 'Session',
          store => Plack::Session::Store::DBI->new(
              dbh        => DBI->connect( @connect_args ),
              table_name => 'my_session_table',
          );
      $app;
  };

Overview

This implements a DBI based storage for session data. By default it will use Storable and MIME::Base64 to serialize and deserialize the data, but this can be configured easily.

This is a subclass of Plack::Session::Store and implements its full interface.

Session table schema

Your session table must have at least the following schema structure:

    CREATE TABLE sessions (
        id           CHAR(72) PRIMARY KEY,
        session_data TEXT
    );

Note that MySQL TEXT fields only store 64KB, so if your session data will exceed that size you'll want to move to MEDIUMTEXT, MEDIUMBLOB, or larger.

Releases

7 releases since Debian 7 (Wheezy); the text changed 6 times.

  1. 7
  2. 8
  3. 9
  4. 10
  5. 11
  6. 12
  7. 13

Authors

Many aspects of this module were partially based upon Catalyst::Plugin::Session::Store::DBI

Daisuke Maki

From libplack-middleware-session-perl 0.34-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.