Franck Cuny > Dancer-1.1902 > Dancer::Session

Download:
Dancer-1.1902.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Source   Latest Release: Dancer-1.3133-TRIAL

NAME ^

Dancer::Session - session engine for the Dancer framework

DESCRIPTION ^

This module provides support for server-side sessions for the Dancer web framework. The session is accessible to the user via an abstraction layer implemented by the Dancer::Session class.

USAGE ^

Configuration

The session engine must be first enabled in the environment settings, this can be done like the following:

In the application code:

    # enabling the YAML-file-based session engine
    set session => 'YAML';

Or in config.yml or environments/$env.yml

    session: "YAML"

By default session are disabled, you must enable them before using it. If the session engine is disabled, any Dancer::Session call will throw an exception.

Route Handlers

When enabled, the session engine can be used in a route handler with the keyword session. This keyword represents a key-value pairs ensemble that is actually stored to the session.

You can either look for an existing item in the session storage or modify one. Here is a simple example of two route handlers that implement a basic /login and /home actions using the session engine.

    post '/login' => {
        # look for params and authenticate the user
        # ...
        if ($user) {
            session user_id => $user->id;
        }
    };

    get '/home' => {
        # if a user is present in the session, let him go, otherwise redirect to
        # /login
        if (not session('user_id')) {
            redirect '/login';
        }
    };

Of course, you probably don't want to have to duplicate the code to check whether the user is logged in for each route handler; there's an example in the Dancer::Cookbook showing how to use a before filter to check whether the user is logged in before all requests, and redirect to a login page if not.

SUPPORTED ENGINES ^

Dancer has a modular session engine that makes implementing new session backends pretty easy. If you'd like to write your own, feel free to take a look at Dancer::Session::Abstract.

The following engines are supported:

Dancer::Session::YAML

A YAML file-based session backend, pretty convininent for development purposes, but maybe not the best for production needs.

Dancer::Session::Memcached

Session are stored in Memcached servers. This is good for production matters and is a good way to use a distributed session storage.

Dancer::Session::Cookie

This module implements a session engine for sessions stored entirely inside encrypted cookies (this engine doesn't use a server-side storage).

DEPENDENCY ^

Dancer::Session may depends on third-party modules, depending on the session engine used. See the session engine module for details.

AUTHORS ^

This module has been written by Alexis Sukrieh. See the AUTHORS file that comes with this distribution for details.

LICENSE ^

This module is free software and is released under the same terms as Perl itself.

SEE ALSO ^

See Dancer for details about the complete framework.

syntax highlighting: