class Amber::Router::Session::AdapterSessionStore

Overview

Session store implementation that uses the pluggable adapter system.

This replaces the hardcoded Redis/Cookie stores with a flexible adapter-based approach that allows users to implement custom session storage backends.

The session adapter handles the low-level storage operations while this class provides the higher-level session management logic including session ID generation, cookie handling, and expiration.

Defined in:

amber/router/session/adapter_session_store.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from class Amber::Router::Session::AbstractStore

current_session current_session, destroy destroy, id id, set_session set_session, update(hash : Hash(String | Symbol, String)) update

Constructor Detail

def self.new(adapter : Amber::Adapters::SessionAdapter, cookies : Amber::Router::Cookies::Store, key : String, expires : Int32 = 120) #

[View source]

Class Method Detail

def self.build(adapter : Amber::Adapters::SessionAdapter, cookies, session) #

[View source]

Instance Method Detail

def [](key : String | Symbol) #

[View source]
def []=(key : String | Symbol, value) #

[View source]
def []?(key : String | Symbol) #

[View source]

[View source]
def changed? : Bool #

[View source]

[View source]
def cookies=(cookies : Amber::Router::Cookies::Store) #

[View source]
def current_session #

[View source]
def delete(key : String | Symbol) #

[View source]
def destroy #

[View source]
def empty? #

[View source]
def expires : Int32 #

[View source]
def expires=(expires : Int32) #

[View source]
def expires_at #

[View source]
def fetch(key : String | Symbol, default = nil) #

[View source]
def has_key?(key : String | Symbol) : Bool #

[View source]
def id #

[View source]
def key : String #

[View source]
def key=(key : String) #

[View source]
def keys #

[View source]
def regenerate_id : String #

Regenerates the session ID to prevent session fixation attacks. Copies all existing session data to a new session, destroys the old session, and updates the cookie with the new session ID.

This should be called after successful authentication or any privilege escalation to ensure the user gets a fresh session ID.

Returns the new session ID.


[View source]
def session_id : String #

[View source]
def session_id=(session_id : String) #

[View source]
def set_session #

[View source]
def to_h #

[View source]
def touch #

Resets the session TTL for sliding expiration. Called on each request to extend the session lifetime when idle_timeout is configured.


[View source]
def update(hash : Hash(String | Symbol, String)) #

[View source]
def values #

[View source]