0

使用最新版 cakephp v2.3.3

当浏览器不允许 cookie 时,我的会话变量有问题。我将变量从一个控制器传递到另一个控制器,只要浏览器启用了 cookie,它就可以完美运行。我已经在控制器中使用 Session 助手进行了尝试,但没有任何努力,同样的问题。

怎么解决,有办法吗???

4

1 回答 1

0

需要使用 Cookie 来跟踪会话 ID,但您可以使用 手动获取或设置会话 ID $this->Session->id()。通过将下面的代码添加到 App Controller 的过滤器之前,您可以将会话 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 指出这一点。

于 2013-05-06T17:32:48.637 回答