[僕] 2005年06月21日 アーカイブ

僕ト云フ事

たろマークはてなブックマーク

2005年06月21日

[cgi-app][perl] CGI::Application::Plugin::Session で、cookie の名前を変更する。

タイトル長ぇ('A`)

こんな感じで、COOKIE_PARAMS を渡すと、cookie の名前は確かに変わるけど、session が維持されません。実行されるたびに新しい session ID が発行されてしまう。多分、CGI::Session->name がデフォルトのままだからだと思う。(さらっとソース読んだ限りでは。)

$self->session_config(
    CGI_SESSION_OPTIONS => [ ("driver:MySQL;", $self->query, {Handle => $self->param('mydbh'), TableName=> 'hoge' }) ],
    DEFAULT_EXPIRY      => '+1h',
    COOKIE_PARAMS       => {
                            -name    => 'hoge',
                            -path    => '/hoge'
                            },
    SEND_COOKIE         => 1,
);

以下のようにやると、CGI::Session->name も変えてくれます。

$self->session_config(
    CGI_SESSION_OPTIONS => [ ("driver:MySQL;", $self->query, {Handle => $self->param('mydbh'), TableName=> 'hoge' }) ],
    DEFAULT_EXPIRY      => '+1h',
    COOKIE_PARAMS       => { -path    => '/hoge' },
    SEND_COOKIE         => 1,
);
$self->session_cookie(-name => 'admin');

CGI::Application::Plugin::Session は、0.07。
おかしなこと言っているように見えたら突っ込みください、誰か(;'-')
というか、Changes に載ってるバグって、これのことか('-';)