PerlでPHPのようなセッションを (Catalyst)


いわゆるCookiesを使うと携帯向けのサービスで使えない。そこでPerl(Catalyst)でリンクタグにセッションIDを自動付与できると知ったので調べたら

Catalystでのセッション管理はどれがいいのだろう」より
Catalyst::Plugin::Session::FastMmapPHPのセッション機能に近いと思われる。

Nix::WebLab: Catalyst - Session」よりCatalyst-Plugin-Session-State-URIを使うようだ。

例.MyAppの場合以下のようにSession関連を追加
lib/MyApp.pm

use Catalyst qw/-Debug
Session
Session::Store::FastMmap
Session::State::URI
ConfigLoader Static::Simple Prototype FillInForm Charsets::Japanese/;

__PACKAGE__->config( name => 'MyApp' ,

session => {
expires => 3600,
rewrite => 1,
storage => '/tmp/session',
param => 'sid',
verify_address => '',

},

);

FillInForm Charsets::Japaneseなどは必要に応じて。。

lib/MyApp/Controller/Root.pm

sub index : Private {
my ( $self, $c ) = @_;
$c->session->{foo} = 'hoge';## session
$c->response->body('<a href="/hello">hello</a>');

}

sub hello: Local{
my ( $self, $c ) = @_;
$c->stash->{msg} = $c->session->{foo};
$c->stash->{template} = 'hello.tt';## template
$c->forward($c->view('TT'));

}


root/hello.tt

[% msg %]

Catalystは5.7003 バージョンによっては動作しないかも。。
また、この方法は誤っている、この方法の方がよりよいなど情報がありましたら、コメントください。