Mojolicious::Sessions - 署名されたクッキーに基づくセッションマネージャー
使い方
use Mojolicious::Sessions; my $sessions = Mojolicious::Sessions->new; $sessions->cookie_name('myapp'); $sessions->default_expiration(86400);
説明
Mojolicious::Sessionsはとても簡単な暗号化クッキーに基づくセッションの実装です。 すべてのデータはMojo::JSONによってシリアライズされ、 クライアント側に保存されますが、署名によって 望まない変更を防ぐことができます。
属性
Mojolicious::Sessionsは次の属性を実装しています。
cookie_domain
my $domain = $sessions->cookie_domain; $sessions = $sessions->cookie_domain('.example.com');
セッションクッキーのためのドメイン。 デフォルトは定義されていません。
cookie_name
my $name = $sessions->cookie_name; $sessions = $sessions->cookie_name('session');
セッションデータを保存するのに利用される署名されたクッキーの名前。 デフォルトはmojolicious
。
cookie_path
my $path = $sessions->cookie_path; $sessions = $sessions->cookie_path('/foo');
セッションクッキーのためのパス。デフォルトは/
。
default_expiration
my $time = $sessions->default_expiration; $sessions = $sessions->default_expiration(3600);
今から有効期限に至るまでのセッションの秒数。 デフォルトは3600
。 毎回のリクエストで有効期限のタイムアウトはリフレッシュされます。 この値を0
に設定すると、ブラウザーのウインドウが閉じられるまでセッションを永続化することができますが、 セキュリティの問題を引き起こすかもしれません。 より調節するには、セッションのexpires
の値を利用して、有効期限の日付を特定の時間にエポック秒で指定してください。
# 現在からの秒数で有効日付を指定 (リクエスト間で継続) $c->session(expiration => 604800); # 絶対的なエポック秒として有効日付を指定 (ひとつのリクエストに対してだけ有効) $c->session(expires => time + 604800); # 有効日付を過去に設定してセッション全体を削除 $c->session(expires => 1);
deserialize
my $cb = $sessions->deserialize; $sessions = $sessions->deserialize(sub {...});
セッションをデシリアライズするために使用されるコールバック。 デフォルトはMojo::JSONのj
です。
$sessions->deserialize(sub { my $bytes = shift; return {}; });
samesite
my $samesite = $sessions->samesite; $sessions = $sessions->samesite('Strict');
すべてのセッションクッキーににSameSite値を設定します。デフォルトはLax
です。ご了承ください 一般的なほとんどのブラウザがこの機能をサポートしていますが、この属性は実験的なものです。 this draft以外ではまだ仕様化されていません。
# SameSite機能を無効にする $sessions->samesite(undef);
secure
my $bool = $sessions->secure; $sessions = $sessions->secure($bool);
すべてのセッションクッキーにセキュアフラグを設定します。 ブラウザーはクッキーをHTTPS接続のみによって送信することができます。
serialize
my $cb = $sessions->serialize; $sessions = $sessions->serialize(sub {...});
セッションをシリアライズするために使用されるコールバック。 デフォルトは、Mojo::JSONのencode_json
です。
$sessions->serialize(sub { my $hash = shift; return ''; });
メソッド
Mojolicious::SessionsはMojo::Baseからすべてのメソッドを 実装しており、次のメソッドを実装しています。
load
$sessions->load(Mojolicious::Controller->new);
セッションデータを署名されたデータからロードします。
store
$sessions->store(Mojolicious::Controller->new);
署名されたクッキーにセッションのデータを保存します。
参考
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
(Mojolicious 8.12を反映。2019年12月13日更新)