我正在使用CGI :: Session模块。我创建了一个会话,并且使用会话ID创建了一个cookie,并在用户单击登录按钮并且凭据有效时发送到浏览器。
use CGI::Session;
use CGI::Session::Tutorial;
use CGI::Session::Driver::file;
my $session = new CGI::Session("driver:File", undef,
{Directory => "/tmp/sessions"});
my $sid = $session->id();
my $cookie = $query->cookie(-name => "CGISESSID",
-value => $session->id,
-domain => 'xyz.com',
path => "/");
print "Set-Cookie: $cookie\n";
$session->param("UserName", $loginUserName);
$query->hidden( 'UserName', $loginUserName);
$session->expire("UserName", '1m');
$session->expire('+15m');
$session->flush();
当我转到下一页时,例如“欢迎”我检查会话是否存在cookie ID。如果是,则加载会话,否则会创建新会话。如果加载会话,我希望到期时间增加+15分钟。这是由会话模块处理的吗?此外,如果欢迎页面中有任何活动,我希望会话过期时间保持增加,如果不活动,会话应在15分钟空闲时间后过期。
my $cookieSid = $query->cookie("CGISESSID") || undef;
my $session;
if ($cookieSid) {
$session = new CGI::Session(undef, $cookieSid,
{Directory=>'/tmp'});
} else {
create a new session/redirect to login page
}
我没有看到在tmp / sessions文件夹中创建的会话的时间戳发生变化,这意味着到期时间尚未从上一个活动实例更新到15分钟。
此外,在浏览器关闭时让cookie过期是一种好习惯吗?