7

最近我做了三个蛋糕应用程序,所有三个都存在这个问题。配置主要是库存,我将其用作会话选项。

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

经过大量谷歌搜索后,每个人都只是建议安全级别太高,但我从未更改过这个值,它是:

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

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

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

登录后cookie设置为三个小时后过期,直到我再次登录后过期日期才更新,这是否正常?

我似乎根本无法复制该问题,有时我会登录,然后下一次单击会再次将我注销,有时会持续一段时间。

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

有任何想法吗?谢谢。

4

4 回答 4

5

你在使用 Ajax。问题只发生在IE中吗?

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

您可以通过以下方式禁用此检查:

Configure::write('Session.checkAgent', false);
于 2012-04-23T10:59:08.213 回答
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
    ));
于 2013-05-21T10:17:19.937 回答
0

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

Pixelastic同事编码建议以下修复,引用:

只需创建名为session_custom.phpinapp/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文件中设置。

于 2012-04-26T08:59:39.797 回答
0

问题在于会话:

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

检查会话是否基于文件。

如果是,请完成该过程。

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

如果得到 null 或空字符串,则运行它,然后执行此过程:

  1. 首先在您的根文件夹中创建一个目录,将其命名为“xyz”或您想要的任何名称。
  2. 使其可写,即chmod 777
  3. 转到开始会话的脚本,在开始会话之前将 session_save_path 更改为新创建的目录。IE:session_save_path('pathToxyz');

然后你就完成了。

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

于 2012-05-01T09:53:47.850 回答