【问题标题】:Session timing out too soon with CakePHP 2.0CakePHP 2.0 的会话超时太快了
【发布时间】:2012-03-05 19:50:47
【问题描述】:

我最近切换到 Cake2.0,并且遇到了一些问题,即 Sessions 超时比他们应该的要早得多。

复制documentation 中的示例,我将会话类型设置为php,并将超时设置为3 天(4320 分钟)。但是,看了各种文章后,似乎即使在 Cake 中将超时设置为 3 天,如果 PHP.ini 设置为会话或 GC 的超时时间更短,PHP 也可能会破坏 GC 中的会话。

所以,我将 Session 默认更改为 cake,并设置相同的超时时间。

Configure::write('Session', array(
   'defaults' => 'cake',
   'timeout' => 4320,
));

Configure::write('Security.level', 'medium');

但是,虽然这应该让我登录 3 天,但我发现在我需要重新登录之前几乎没有 3 小时。

是否存在我应该注意的会话超时问题,或者超时以秒为单位(不是分钟?)还是像 1.3 一样受到 Security.level 的影响?我无法找到任何关于它在 2.0 中如何工作或可能导致问题的硬性文档。

提前致谢。

答案: 对于稍后进来并看到此内容的任何人。 2.0.5 中存在 Session 超时没有保存 Config.write() 中的值的 bug;

要解决,请更新到 2.0.6(或离开 beta 时的 2.1)

【问题讨论】:

  • 很高兴知道!感谢您使用解决方案更新您的问题。
  • 奇怪,我在 2.0.6 中仍然遇到这个错误...

标签: session cakephp-2.0


【解决方案1】:

如果您正在使用安全组件,您可以随时尝试将它们的到期时间更改为 3 小时:

$components = array(
    'Security' => array(
        'csrfExpires' => '+3 hour'
    )
);

我并不是说这样做是个好主意,但它可以帮助您缩小问题的范围。如果您使用的是安全组件,这可能就是问题所在。

另外,Session.timeout 以分钟(而不是秒)为单位。

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2013-12-19
    • 2017-06-16
    • 2011-02-03
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多