【问题标题】:CakePHP session/auth logging out intermittentlyCakePHP 会话/身份验证间歇性注销
【发布时间】:2010-12-07 02:38:33
【问题描述】:

我收到来自我的用户的报告和投诉,他们将使用一个屏幕并在下一次请求时立即被踢回登录屏幕。它不会一直发生,而是随机发生。

我正在使用 CakePHP 和 Auth 组件,除了这个问题之外,它们似乎运行良好

我曾经在 Cake 论坛上得到一些反馈,这有时是由重置会话的 404 请求引起的,即如果您的图像链接损坏或缺少 favicon 文件。我打开了萤火虫,没有失败的请求,所以我排除了这种可能性,但用户偶尔会被注销。这似乎发生在浏览器和操作系统中。

以下是我的配置设置的摘要: 安全级别 = 高 Session.timeout = 1200 // 这意味着我的实际超时时间应该是 12,000 秒 Session.save = php

我真的不知道是什么导致了这个问题......

【问题讨论】:

    标签: php authentication session cakephp session-timeout


    【解决方案1】:

    我的安全设置为高也有问题。当您将其设置为高时,它会在每个请求上重新生成会话: “如果 'Security.level' 设置为 'high',CakePHP 会话 ID 也会在请求之间重新生成。”

    我在跨浏览器时也遇到了这个问题,所以我知道这不是最佳解决方案,但我只是将安全设置更改为中等,并更改了会话超时以反映该设置,此后没有任何问题。

    【讨论】:

      【解决方案2】:

      我也遇到过类似的问题,发现是core.php文件中的user_agent检查,设置为false!

      发生的情况是在页面刷新后会话 id 发生了变化,我被注销了,但是在 Session 对象中出现了一个错误,说 Attempted Session Hijack!!! pr($this->Session);

      在 core.php 中将此设置为 false! 配置::write('Session.checkAgent', false);

      【讨论】:

      • 非常感谢。配置::write('Session', array('defaults' => 'database', 'checkAgent', false, 'handler' => array('model' => 'cake_sessions') //'timeout' => 480 // 8 小时 ));
      【解决方案3】:

      检查您的Auth->allow->deny,因为您的用户可能会访问您的控制器的受限部分或操作。

      其次,检查你的 CakePHP 的具体Sanitize,因为“高安全性”选项通常会造成麻烦。

      404 页面重置会话?我从来没有听说过。

      我认为您的问题位于身份验证例程中的某个位置。如果你限制太多的事情,它可能会发生,一些请求群会由于缺少属性而失败。

      例如:UserOne 试图访问您的网站,他的用户名包含一些字符串,导致对用户名的错误解释。 该名称可以在数据库中找到,但身份验证无法将其链接到请求。

      这样的错误总是隐藏在你的代码中,你没想到它们会出现。

      【讨论】:

      • 对不起,我可能需要进一步指定.. 使用 Auth 的用户登录过程很好。当尝试访问 /admin/ url 时,我将其设置为需要 Auth,并且它会为正确的屏幕这样做。登录没问题,在数据库里找名字,但问题是我已经进去了,它会偶尔把我踢出去。
      • 404 请求显然可以重置 Cake Auth/Session,而不是一般的 PHP 问题
      • 尝试再次设置 cakephp,包括您的数据库(等),这可能会有所帮助。
      【解决方案4】:

      Security.level 高会做到这一点。在 core.php 中将其设置为 medium

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-10
        • 1970-01-01
        • 1970-01-01
        • 2016-12-31
        • 2020-03-11
        • 2017-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多