我使用cakephp 2和AuthComponent一起对我的web应用程序上的用户进行身份验证。至关重要的是,用户不会自动注销很长一段时间(至少24小时,更长或无限是最好的)。原因是我们在cakephp webapp中存储了许多必须在几秒钟内可供当前登录用户使用的内容,而不会强制他输入密码。为此,我已经设置Security.level
到low
,我还实施防止自动注销cakephp
Configure::write('Session.timeout', 3000);
这应该给用户一个很好的两天了他被注销了。然而,即使用户已经在同一分钟内处于活动状态,用户仍会不时注销。我不知道它何时发生,以及如何重现它,但我想知道我是否可能错过了某些东西,其他策略可能有助于解决我的问题。
作为一个网络服务器,我在Ubuntu 12.04上使用标准apache,没有任何特殊的配置更改!
这是一个非常好的主意,我非常喜欢它,虽然使用标准的cakephp AuthComponent很难实现。两个问题:散列应该多久?为什么在创建新会话时必须重新生成? – schneida
长度不是一个问题,最重要的是唯一性和伪造哈希的难度。 'md5($ userid)'会很糟糕。它使得哈希可预测。像'md5(microtime())'可能工作得很好。由于cookie存储在客户端,因此它们可以被第三方读取。您可以为用户提供散列,并且无需用户名或密码即可登录。如果哈希得到重新生成并且只允许使用一次,它会减少持久会话的安全风险。 – datasage
姆姆,所以如果一个坏的用户将cookie复制到他的浏览器,他将能够登录到系统,并且因为cookie被重新生成,真正的用户将被注销,因为他的cookie现在不再有效。那么我认为这对我来说已经足够了!非常感谢! – schneida