检测过期会话


Detecting expired sessions

所以我在应用程序中限制了会话的TTL。在这段不活动的时间之后,当用户向需要登录的页面发出请求时,如果不自动重定向到登录页面,用户就不能再做任何事情。

但是这并不是那么友好。用户将直接跳转到登录页面,而不会事先通知或解释原因。

我想通过登录页面上的消息通知我的用户,他们的请求已因不活动而结束,他们需要再次登录。那么什么是合适的解法呢?

PHP自动清理过期会话是"在代码实际运行之前"启动的一部分,基于.ini文件中指定的概率设置/间隔。这将自动运行,并且超出您的权限。如果需要控制(或跟踪)过期会话,则必须禁用PHP垃圾收集器并启用自己的垃圾收集器。它将负责定期扫描会话存储介质(文件、数据库、占卜板等),查找过期的会话并删除它们。

一个更好的选择是简单地拥有长期存在的会话文件,并以某种方式记录会话中的最后访问时间。"距离你上次做某事已经XXX分钟了,请确认你是你自己"或者"距离你登录已经XXX分钟了"等等。

这使您不必滚动自己的会话过期处理程序,并且仍然让用户"登录",并且只需要验证他们的状态。