名前

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::JSONjです。

$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::JSONencode_jsonです。

$sessions->serialize(sub {
  my $hash = shift;
  return '';
});

メソッド

Mojolicious::SessionsMojo::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日更新)