PerlでPHPのようなセッションを (Catalyst)
いわゆるCookiesを使うと携帯向けのサービスで使えない。そこでPerl(Catalyst)でリンクタグにセッションIDを自動付与できると知ったので調べたら
「Catalystでのセッション管理はどれがいいのだろう」より
Catalyst::Plugin::Session::FastMmapがPHPのセッション機能に近いと思われる。
「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 バージョンによっては動作しないかも。。
また、この方法は誤っている、この方法の方がよりよいなど情報がありましたら、コメントください。