GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  CATALYST::PLUGIN::SESSION::STORE::DBIC (3)

.ds Aq ’

NAME

Catalyst::Plugin::Session::Store::DBIC - Store your sessions via DBIx::Class

CONTENTS

SYNOPSIS



    # Create a table in your database for sessions
    CREATE TABLE sessions (
        id           CHAR(72) PRIMARY KEY,
        session_data TEXT,
        expires      INTEGER
    );

    # Create the corresponding table class
    package MyApp::Schema::Session;

    use base qw/DBIx::Class/;

    __PACKAGE__->load_components(qw/Core/);
    __PACKAGE__->table(sessions);
    __PACKAGE__->add_columns(qw/id session_data expires/);
    __PACKAGE__->set_primary_key(id);

    1;

    # In your application
    use Catalyst qw/Session Session::Store::DBIC Session::State::Cookie/;

    __PACKAGE__->config(
        # ... other items ...
        Plugin::Session => {
            dbic_class => DBIC::Session,  # Assuming MyApp::Model::DBIC
            expires    => 3600,
        },
    );

    # Later, in a controller action
    $c->session->{foo} = bar;



DESCRIPTION

This Catalyst::Plugin::Session storage module saves session data in your database via DBIx::Class. It’s actually just a wrapper around Catalyst::Plugin::Session::Store::Delegate; if you need complete control over how your sessions are stored, you probably want to use that instead.

METHODS

    setup_finished

Hook into the configured session class.

    session_store_dbic_class

Return the DBIx::Class class name to be passed to $c->model. Defaults to DBIC::Session.

    session_store_dbic_id_field

Return the configured ID field name. Defaults to id.

    session_store_dbic_data_field

Return the configured data field name. Defaults to session_data.

    session_store_dbic_expires_field

Return the configured expires field name. Defaults to expires.

    session_store_model

Return the model used to find a session.

    get_session_store_delegate

Load the row corresponding to the specified session ID. If none is found, one is automatically created.

    session_store_delegate_key_to_accessor

Match the specified key and operation to the session ID and field name.

    delete_session_data

Delete the specified session from the backend store.

    delete_expired_sessions

Delete all expired sessions.

CONFIGURATION

The following parameters should be placed in your application configuration under the Plugin::Session key.

    dbic_class

(Required) The name of the DBIx::Class that represents a session in the database. It is recommended that you provide only the part after MyApp::Model, e.g. DBIC::Session.

If you are using Catalyst::Model::DBIC::Schema, the following layout is recommended:
o MyApp::Schema - your DBIx::Class::Schema class
o MyApp::Schema::Session - your session table class
o MyApp::Model::DBIC - your Catalyst::Model::DBIC::Schema class
This module will then use $c->model to access the appropriate result source from the composed schema matching the dbic_class name.

For more information, please see Catalyst::Model::DBIC::Schema.

    expires

Number of seconds for which sessions are active.

Note that no automatic cleanup is done on your session data. To delete expired sessions, you can use the delete_expired_sessions method with Catalyst::Plugin::Scheduler.

    id_field

The name of the field on your sessions table which stores the session ID. Defaults to id.

    data_field

The name of the field on your sessions table which stores session data. Defaults to session_data for compatibility with Catalyst::Plugin::Session::Store::DBI.

    expires_field

The name of the field on your sessions table which stores the expiration time of the session. Defaults to expires.

SCHEMA

Your sessions table should contain the following columns:



    id           CHAR(72) PRIMARY KEY
    session_data TEXT
    expires      INTEGER



The id column should probably be 72 characters. It needs to handle the longest string that can be returned by generate_session_id in Catalyst::Plugin::Session, plus another eight characters for internal use. This is less than 72 characters when SHA-1 or MD5 is used, but SHA-256 will need all 72 characters.

The session_data column should be a long text field. Session data is encoded using MIME::Base64 before being stored in the database.

Note that MySQL TEXT fields only store 64 kB, so if your session data will exceed that size you’ll want to use MEDIUMTEXT, MEDIUMBLOB, or larger. If you configure your DBIx::Class::ResultSource to include the size of the column, you will receive warnings for this problem:



    This session requires 1180 bytes of storage, but your database
    column session_data can only store 200 bytes. Storing this
    session may not be reliable; increase the size of your data field



See add_columns in DBIx::Class::ResultSource for more information.

The expires column stores the future expiration time of the session. This may be null for per-user and flash sessions.

Note that you can change the column names using the id_field, data_field, and expires_field configuration parameters. However, the column types must match the above.

AUTHOR

Daniel Westermann-Clark <danieltwc@cpan.org>

ACKNOWLEDGMENTS

o Andy Grundman, for Catalyst::Plugin::Session::Store::DBI
o David Kamholz, for most of the testing code (from
Catalyst::Plugin::Authentication::Store::DBIC)
o Yuval Kogman, for assistance in converting to
Catalyst::Plugin::Session::Store::Delegate
o Jay Hannah, for tests and warning when session size
exceeds DBIx::Class storage size.

COPYRIGHT

Copyright (c) 2006 - 2009 the Catalyst::Plugin::Session::Store::DBIC AUTHOR as listed above.

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

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 CATALYST::PLUGIN::SESSION::STORE::DBIC (3) 2013-07-27

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.