我遇到了一个问题,当用户空闲时间超过24小时(我的会话超时时间)或者离开网站24小时以上后再回来时,他们不会被注销,但是他们的会话已经过期了,至少他们的_token不再有效。
这会导致一些不必要的行为,如果用户在_token过期后提交表单,他们现在会收到一个TokenMismatchException。
本地测试似乎当闲置时间超过会话寿命时,用户会被登出。然而,在实际生产环境中,即使空闲时间超过会话寿命,用户仍然保持登录状态,并且Auth::check()和Auth::user()都可以按预期工作,就好像用户已经登录一样。
是什么原因导致用户没被注销,即使他们的会话已经过期了?
有没有一种方式可以检查会话是否已过期,以便我可以手动注销用户并提示他们重新登录?
我尝试使用App::before过滤器来检查会话上的last_activity并确定它是否已过期,但是一旦会话过期,我就无法访问它,因为它已经从数据库中删除了,因此我无法比较时间戳以确定是否需要手动注销用户并提示重新登录。
我的会话配置:
感谢您的选择。
这会导致一些不必要的行为,如果用户在_token过期后提交表单,他们现在会收到一个TokenMismatchException。
本地测试似乎当闲置时间超过会话寿命时,用户会被登出。然而,在实际生产环境中,即使空闲时间超过会话寿命,用户仍然保持登录状态,并且Auth::check()和Auth::user()都可以按预期工作,就好像用户已经登录一样。
是什么原因导致用户没被注销,即使他们的会话已经过期了?
有没有一种方式可以检查会话是否已过期,以便我可以手动注销用户并提示他们重新登录?
我尝试使用App::before过滤器来检查会话上的last_activity并确定它是否已过期,但是一旦会话过期,我就无法访问它,因为它已经从数据库中删除了,因此我无法比较时间戳以确定是否需要手动注销用户并提示重新登录。
我的会话配置:
'driver' => 'database',
'lifetime' => 1440,
'expire_on_close' => false,
感谢您的选择。