CakePHP一直在记录我

时间:2012-04-23 10:09:27

标签: php session cakephp cakephp-2.1

最近我制作了三个Cake Apps,三个都分享了这个问题。配置主要是库存,我使用它作为会话选项。

Configure::write('Session', array(
    'defaults' => 'php',
    'cookie' => 'test'
));

经过大量的谷歌搜索,每个人都只是暗示安全级别太高,但我从未改变过这个值,它是:

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

编辑:我也尝试过安全性低且没有变化。

我只使用基本身份验证来检查用户是否已登录。

登录后,cookie设置为三小时后过期,过期日期不会更新,直到我再次登录,这是正常的吗?

我似乎无法复制这个问题,有时我会登录,下一次点击会再次登出我,有时会持续一段时间。

我在Windows 7上使用Chrome,网站上没有AJAX。

有什么想法吗?感谢。

4 个答案:

答案 0 :(得分:5)

您使用的是Ajax吗?这个问题只发生在IE吗?

IE使用不同的浏览器代理字符串来对浏览器本身进行Ajax调用。为了提高安全性,Cake检查浏览器代理,并且在IE的情况下,认为另一个浏览器试图劫持会话,因为代理是不同的。

您可以使用以下方法禁用此检查:

Configure::write('Session.checkAgent', false);

答案 1 :(得分:1)

遇到同样的问题后,我发现这是由Session.cookieTimeout值引起的。虽然php会话仍然有效,但会话cookie上的截止日期不会刷新。

这是我的会话配置

Configure::write('Session', array(
        'defaults' => 'php',
        'timeout' => 30, // The session will timeout after 30 minutes of inactivity
        'cookieTimeout' => 1440, // The session cookie will live for at most 24 hours, this does not effect session timeouts
        'checkAgent' => false,
        'autoRegenerate' => true, // causes the session expiration time to reset on each page load
    ));

答案 2 :(得分:0)

您不是唯一一个在Chrome浏览器上遇到CakePHP会话问题的人。

Pixelastic编码员建议following fix,引用:

只需在session_custom.php中创建名为app/config/的文件,在其中删除以下行:

// Killing this config that was causing so much trouble with Chrome
ini_set('session.referer_check', '');

// No session id in url
ini_set('session.use_trans_sid', 0);

// Using custom cookie name instead of PHPSESSID
ini_set('session.name', Configure::read('Session.cookie'));

// Cookie like time, depending on security level
ini_set('session.cookie_lifetime', $this->cookieLifeTime);

// Cookie path
ini_set('session.cookie_path', $this->path);

然后在Configure::write('Session.save', 'session_custom');文件中设置core.php

答案 3 :(得分:0)

问题在于会话:

首先检查你的'phpinfo();'

检查会话是否基于文件。

如果是,请完成整个过程。

创建一个新脚本文件(php),其中仅包含以下代码:<?php var_dump(session_save_path());?>

如果你得到null或空字符串就运行它然后去做这个过程:

  1. 首先在根文件夹中创建一个名为'xyz'的目录或任何你想要的目录。
  2. 使其可写,即chmod 777
  3. 转到启动会话的脚本,在开始会话之前,将session_save_path更改为新创建的目录。即:session_save_path('pathToxyz');
  4. 然后你就完成了。

    如果会话设置为内存:不需要配置。他们只是使用系统内存。在这种情况下,你永远不会遇到这个问题。