【问题标题】:CakePHP auth session vs. cookie not updatingCakePHP 身份验证会话与 cookie 未更新
【发布时间】:2011-04-16 09:58:36
【问题描述】:

我有一个 ACL+auth 驱动的应用程序。一切正常,但我发现用户在随机一段时间后退出。在做了一些研究之后,我发现cookie设置一次不会改变它在页面刷新时的到期日期。所以它是这样的:

我手动将过期时间设置为 1 分钟(Security.level 低(蛋糕/库有一些变化)和超时 60)

19:00:00 - 用户加载页面 - cookie 已设置

19:00:05 - 用户登录(cookie 不会更改过期日期)

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

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

19:01:05 - 页面刷新 - 用户已注销...(cookie 在 1 分钟后过期)

所以问题是用户在设置 cookie 后 60 秒后注销,而不是 60 秒不活动。 CakePHP 会自动处理 cookie 文件吗?还是我必须自己照顾? 我所做的只是在 config/core.php 中设置一个 cookie 名称并设置身份验证。我没有任何 cookie 处理功能,但 cookie 是自己创建的 - 正确,只是没有更新

【问题讨论】:

  • “蛋糕/库有一些变化”?!我会说所有的赌注都结束了。你到底改变了什么,为什么?除非您要修复核心中的错误,否则无需触摸 /cake 目录。
  • 你的服务器有 suhosin 补丁吗?

标签: session cakephp cookies authentication


【解决方案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, "/");
    }

【讨论】:

  • 我正在考虑这个解决方案。但我也在考虑将 cookie 的到期时间设置为 10 年后。
猜你喜欢
  • 1970-01-01
  • 2010-09-26
  • 2015-04-30
  • 2019-10-28
  • 2016-05-22
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
  • 2015-03-25
相关资源
最近更新 更多