Session cakephp,除非允许浏览器中有cookie,否则会话无法工作

Session cakephp,除非允许浏览器中有cookie,否则会话无法工作,session,cakephp,cookies,Session,Cakephp,Cookies,使用最新版本的cakephp v2.3.3 当浏览器不允许cookie时,我的会话变量有问题。 我将变量从一个控制器传递到另一个控制器,只要浏览器启用了cookies,这就可以完美地工作。我已经在控制器中的会话助手中尝试过,但没有尝试,同样的问题 如何解决此问题,是否有解决办法?需要Cookies来跟踪会话ID,但您可以使用$this->session->ID()手动获取或设置会话ID。通过将下面的代码添加到App Controller的before筛选器,您可以将会话ID设置为URL参数,如h

使用最新版本的cakephp v2.3.3

当浏览器不允许cookie时,我的会话变量有问题。 我将变量从一个控制器传递到另一个控制器,只要浏览器启用了cookies,这就可以完美地工作。我已经在控制器中的会话助手中尝试过,但没有尝试,同样的问题


如何解决此问题,是否有解决办法?

需要Cookies来跟踪会话ID,但您可以使用
$this->session->ID()手动获取或设置会话ID。通过将下面的代码添加到App Controller的before筛选器,您可以将会话ID设置为URL参数,如
http://example.com/posts/view/1?session=qkv108c2pqeubcpeos1q7ekds3
,例如

if(!empty($this->request->query['session'])){
$this->Session->id($this->request->query['Session']);
}
每个请求都需要会话ID,这意味着您必须将其包含在每个链接中。我建议扩展HTML助手的url和链接方法以自动添加它

编辑:


您应该验证
$this->Session->read('Config.userAgent')
$this->request->clientIp()自用户通过身份验证以防止会话劫持后未更改。感谢thaJeztah指出这一点。

CakePHP v2.3.3中存在安全漏洞。您应该升级到v2.3.4。它不需要对您的代码进行任何更改,只需替换
libs/cake
目录。感谢您立即更新。只需确保正确检查ip地址和浏览器客户端,以防止会话固定/劫持。感谢所有评论,非常感谢!