package CGI::Application::Session; use base qw/ CGI::Application /; use strict; use Apache::Session::File; sub cgiapp_init { my $self = shift; my $cgi = $self->query; my $params; if (ref($_[0]) eq 'HASH') { $params = $self->_cap_hash(%{ $_[0] }); } else { $params = $self->_cap_hash({ @_ }); } my $id = $cgi->cookie( -name => ( $params->{'SESSIONS_NAME'} || 'CGI::Application::Session' ), -path => ( $params->{'SESSIONS_PATH'} || '/' ) ); my %session; if (defined $id) { tie %session, 'Apache::Session::File', $id; } else { tie %session, 'Apache::Session::File'; $id = $session{'_session_id'}; } $self->{'__SESSION_OBJ'} = \%session; $self->{'__SESSION_ID'} = $id; $self->header_props( -cookie => $cgi->cookie( -expires => ( $params->{'SESSIONS_EXPIRY'} || '+1y' ), -name => ( $params->{'SESSIONS_NAME'} || 'CGI::Application::Session' ), -path => ( $params->{'SESSIONS_PATH'} || '/' ), -value => $id ) ); return $self; } 1; __END__