使用最新版本的cakephp v2.3.3
当浏览器不允许使用Cookie时,我的会话变量出现问题。 我将变量从一个控制器传递到另一个控制器,只要浏览器启用了cookie,这就完美无缺。我已经在控制器中使用Session助手尝试了它,但没有努力,同样的问题。
如何解决这个问题,是否有解决方法?
答案 0 :(得分:0)
需要Cookie来跟踪会话ID,但您可以使用$this->Session->id()
手动获取或设置会话ID。通过在过滤器之前将以下代码添加到App Controllers',您可以将会话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指出这一点。