NAME
PAGI::Middleware::Session - Session management middleware
SYNOPSIS
use PAGI::Middleware::Builder;
my $app = builder {
enable 'Session',
secret => 'your-secret-key',
cookie_name => 'session_id';
$my_app;
};
# In your app:
async sub app {
my ($scope, $receive, $send) = @_;
my $session = $scope->{'pagi.session'};
$session->{user_id} = 123;
$session->{logged_in} = 1;
}
DESCRIPTION
PAGI::Middleware::Session provides server-side session management with cookie-based session IDs. Sessions are stored in memory by default.
CONFIGURATION
secret (required)
Secret key for session ID generation and validation.
cookie_name (default: 'pagi_session')
Name of the session cookie.
cookie_options (default: { httponly => 1, path => '/' })
Options for the session cookie.
expire (default: 3600)
Session expiration time in seconds.
store (default: in-memory)
Session store object. Must implement get($id), set($id, $data), delete($id).
SCOPE EXTENSIONS
This middleware adds the following to $scope:
pagi.session
Hashref of session data. Modify this directly to update the session. Keys starting with
_are reserved for internal use.pagi.session_id
The session ID string.
SESSION DATA
Special session keys:
_id - Session ID (read-only)
_created - Unix timestamp when session was created
_last_access - Unix timestamp of last access
_regenerated - Set to 1 to regenerate session ID
SEE ALSO
PAGI::Middleware - Base class for middleware
PAGI::Middleware::Cookie - Cookie parsing