$c->config->{session}{cookie_name} ||= "session";
}
-sub finalize {
+sub finalize_cookies {
my $c = shift;
my $cookie_name = $c->config->{session}{cookie_name};
if ( my $sid = $c->sessionid ) {
my $cookie = $c->request->cookies->{$cookie_name};
if ( !$cookie or $cookie->value ne $sid ) {
- $c->response->cookies->{$cookie_name} = { value => $sid };
+ $c->response->cookies->{$cookie_name} = {
+ value => $sid,
+ expires => $c->session->{__expires},
+ };
+ if ( my $domain = $c->config->{session}{cookie_domain} ) {
+ $c->response->cookies->{$cookie_name}->{domain} = $domain;
+ }
$c->log->debug(qq/A cookie with the session id "$sid" was saved/)
if $c->debug;
}
}
- return $c->NEXT::finalize(@_);
+ return $c->NEXT::finalize_cookies(@_);
}
sub prepare_cookies {
Will restore if an appropriate cookie is found.
-=item finalize
+=item finalize_cookies
Will set a cookie called C<session> if it doesn't exist or if it's value is not
the current session id.
The name of the cookie to store (defaults to C<session>).
+=item cookie_domain
+
+The name of the domain to store in the cookie (defaults to current host)
+
=back
=head1 SEE ALSO