2010-09-23 84 views
2

我有一个ACL +身份验证驱动的应用程序。一切工作正常,但我发现用户在一段随机时间后注销。在做了一些研究之后,我发现cookie设置一次不会改变页面刷新时的到期日期。因此,它是这样的:CakePHP验证会话与cookie不更新

手动设置过期时间为1分钟(Security.level低(与位于cake/lib一些变化)和超时60)

19:00:00 - 用户加载页面 - Cookie设置了

19时00分05秒 - 用户登录(cookie不改变的截止日期)

十九时00分30秒 - 页面刷新(cookie不改变的截止日期)

19:00:55 - 刷新页面(cookie不会更改到期日期)

19时01分05秒 - 页面刷新 - 用户登录了...(1分钟后过期的cookie)

所以问题是用户会从在代替设置cookie 60秒后退出60秒不活动。 CakePHP会自动处理cookie文件吗?还是我必须自己照顾呢? 我所做的只是在config/core.php和setup auth中设置一个cookie名称。我没有任何cookie处理函数,但是cookie是自己创建的 - 正确的,只是没有更新

+4

“蛋糕/库中有些变化”?!我会说所有的赌注都没有了。你究竟做了什么改变?为什么?除非您正在修复核心中的错误,否则应该不需要触摸'/ cake'目录。 – deceze 2010-09-23 23:12:56

+1

你的服务器是否有suhosin补丁? – Dunhamzzz 2011-09-20 18:20:54

回答

1

我有同样的问题,并用下面的代码在每个页面加载和ajax调用时调用它。

if(isset($_COOKIE[Configure::read("Session.cookie")])){ 
      $session_delay = Configure::read("Session.timeout") * (Configure::read("Security.level") == "low" ? 1800 : 100); 
      setcookie(Configure::read("Session.cookie"), $_COOKIE[Configure::read("Session.cookie")], mktime() + $session_delay, "/"); 
    } 
+0

我正在考虑这个解决方案。但我也考虑将Cookie的到期时间设定为未来10年。 – SunSparc 2013-12-08 08:32:27