Amon2でセッションの有効期限を設定したいと思い、
$c->session->expire();
に引数を渡すのかな?と思ったのですが、上手くいかず。
cpanのHTTP::Session2::ClientStore2を確認したところ、
ClientStore2.pm
sub expire {
my $self = shift;
# Load original session first.
$self->load_session();
# Rebless to expired object.
bless $self, 'HTTP::Session2::Expired';
return;
}
何も受け取ってない…
ソースを読んでいくうちに、
Expired.pm
# Finalize session cookie
{
my %cookie = %{$self->session_cookie};
my $name = delete $cookie{name};
push @cookies, $name => +{
%cookie,
value => '',
expires => '-1d',
};
}
ClientStore2.pm
# Finalize session cookie
{
my %cookie = %{$self->session_cookie};
my $name = delete $cookie{name};
my $value = $self->_serialize($self->id, $self->_data);
push @cookies, $name => +{
%cookie,
value => $value,
};
}
Base.pm
has session_cookie => (
is => 'ro',
lazy => 1,
default => sub {
+{
httponly => 1,
secure => 0,
name => 'hss_session',
path => '/',
},
},
# Need shallow copy
trigger => sub {
my $self = shift;
$self->{session_cookie} = +{%{$self->{session_cookie}}};
},
);
とあるので、ここで設定すれば大丈夫かな?と思い、
$self->{session}->session_cookie->{expires} = '+3600s'
としたところ、正常にセッションが機能しました。