社区授权Codeigniter 3-似乎随机丢失了会话变量

时间:2019-01-14 01:09:26

标签: codeigniter authentication

我正在使用带有Codeingniter V3的Community-Auth进行身份验证和存储授权级别等。

我遇到的问题是我的用户有时会被重定向到登录页面,即使他们尚未处于非活动状态。我似乎无法隔离出特定的行为或模式来重复该问题。

当控制器调用verify_min_level例程时,将发生问题,该例程应仅验证它们是否已登录。但是它返回FALSE,这意味着Community-Auth认为他们尚未登录,并且代码重定向到登录屏幕。

由于它似乎是随机发生的,并且没有明显的原因(用户一段时间未处于活动状态等),因此使我的用户发疯。

还有其他人看到过这种行为吗?

1 个答案:

答案 0 :(得分:0)

我似乎已经确定了问题所在。这个特定的客户希望会话只有在他们注销或关闭浏览器窗口时才结束。因此,我将会话过期时间设置为零(0)。

我认为垃圾收集只会偶尔删除会话(鉴于在codeigniter中,我知道0表示会话将在两年内结束),并且我会用自己的垃圾收集来赶上它。但是,我开始注意到ci_sessions表(我将会话数据从文件系统移至数据库以帮助调试此问题)将频繁删除多个会话,即使这些会话中的任何一个都不存在已有两年之久。

似乎已解决了该问题的方法是,将PHP参数 sessions.gc_probability 设置为0,以完全关闭垃圾收集。

没有垃圾回收,没有过早删除会话变量。

我正在实施每晚的CRON作业,以对ci_sessions表进行垃圾回收。