Drupal Session似乎不合逻辑


Drupal Session doesn't seem logical

我正在使用Drupal 6来执行一些电子支付工作的程序。 由于登录意味着浏览器可以访问用户的敏感财务信息,因此我想确保它将在非活动期后使会话超时。

我尝试使用:

ini_set('session.cookie_lifetime',  600); //expire after 10 minutes of inactivity

但是,这会在 10 分钟后将用户注销,无论他们自登录以来是否有任何活动。

是否有其他设置可供使用或修改此设置以使会话在不活动后过期,而不是具有硬性且快速的生存期?

Drupal允许用户保持登录状态,直到他们注销。这对你来说似乎不合逻辑,但对于写大帖子或愿意在暂停后恢复写作的人来说,这很有意义:如果经过一整天的工作,他们提交帖子并收到错误,因为他们的会话已过期。

也就是说,您可以查看自动注销模块,该模块似乎可以帮助您满足应用程序的要求。

您需要实现自己的解决方案 没有可靠的方法可以通过更改设置来实现。如果您需要更多信息,请查看此答案如何在 30 分钟后使 PHP 会话过期?

取自该问题的最高答案:

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // last request was more than 30 minutes ago
    session_unset();     // unset $_SESSION variable for the run-time 
    session_destroy();   // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

此外,您还需要设置:

ini_set('session.cookie_lifetime',  0);

这样它就不会自行过期,除非他们关闭浏览器。