【发布时间】:2012-03-26 08:43:13
【问题描述】:
在这个网站上,我遇到了用户可能需要在很长一段时间内登录的情况(在某些情况下,可能需要几天、几周,甚至几个月)。问题是我在服务器日志中看到他们经常没有登录,因此尝试连接会导致被重定向到登录页面。
顺便说一下,这是每分钟自动连接的客户端。
似乎他们在某些情况下被注销(停电?计算机进入睡眠状态?其他网络中断?)。通常,用户每分钟都会连接到服务器,因此他们应该能够保持登录状态,是吗?我让一个连接运行了几天,并一直保持登录状态。
我的相关会话设置是:
session.cache_expire 180
session.cookie_lifetime 0
session.gc_maxlifetime 1440
session.use_cookies On
session.use_only_cookies Off
登录状态的检查由 Zend Framework 的Zend_Auth 处理。让我保持登录超过一天意味着我没有遇到 cache_expire 限制或 gc_maxlifetime,对吗?
我可以模拟似乎正在发生的注销的唯一方法是建立连接(建立会话)然后让计算机在一夜之间脱机。当我第二天再次上网并且客户端尝试继续连接时(它会自动执行此操作),我发现我已注销。
所以我的问题。
我是否评估了客户端可能被注销的原因 正确吗?
如果是(或者即使不是),我能做些什么来防止这些注销?大幅扩展各种会话时间控制设置?
【问题讨论】:
-
可能会删除一个表明用户已登录的 cookie,然后进行检查?
-
看看samy.pl/evercookie - 这确实令人讨厌,但可以完成工作:)
标签: php zend-framework session