Mojolicious::Plugin::SessionStore を作ってみました

hayajo/Mojolicious-Plugin-SessionStore · GitHub

shipitしました。(2013-05-05)

これなに?

Mojoliciousのセッションストアはcookieです。普通に使うぶんにはcookieで十分なのですが、やんごとなき理由でセッションストアをファイルやデータベース、KVSなどに変更したい場合がありますよね。

そんなときにお手軽にセッションストアを変更できるプラグインです。

use Mojolicious::Lite;
use Plack::Session::Store::File;

plugin SessionStore => Plack::Session::Store::File->new;    
...

似たようなものに Mojolicious::Plugin::Session があります。こちらはセッションオブジェクトを Mojolicious::Controller#stash を経由して使います。既存の Mojolicious::Controller#session や Mojolicious::Controller#flash を利用できないので少々使い勝手が悪いかなぁと思って作った次第です。

利用できるストアオブジェクト

Plack::Session::Store と同様のインターフェースを実装したオブジェクトを利用できます。

お好きなものを使ってください。

TIPS

ドキュメントには書いてないのですが、このプラグインを使うと Mojolicious::Controller@session_options が生えます。

Plack::Request@session_options と同じような使い方ができるので、セッションキーの確認やSession Fixation対策を行いたい場合にご利用ください。

my $session_id = $c->session_options->{id}; # セッションキーの取得
…
$c->session_options->{change_id}++; # 古いセッションを破棄し、新しいセッションを発行

というわけで

しばらく使って問題なさそうだったらshipitしようかと。

不具合がございましたらIssueやPullreqください。