在beforeFilter()cake php中读取Session值

时间:2009-07-24 09:40:02

标签: cakephp session

我正在使用app_error脚本来处理我网站上损坏的链接,并在error404()操作中写了一个像这样的会话值:

$this->controller->Session->write("visitor", $visitorId);

这一切都有效,因为如果我重新加载app_error,我可以成功读取会话。 一旦我写了这个会话值,我就会重定向到一个控制器:

$this->controller->redirect($redirectURL,301);      

我接下来要做的是在app_controller中的beforeFilter()回调中检查此会话值,但它似乎无法检测到此值。我试过了

$this->Session->read("visitor");

并且它不会检索任何内容。我也尝试了检查方法。

有人能看到任何明显的东西吗?我将调试设置为0(生产),因此它默认使用error404()。

2 个答案:

答案 0 :(得分:2)

尝试设置会话值,如下所示:

$this->Session->write("VisitorInfo.visitor","value");

然后你不会有任何问题从app_controller使用:

读取它
$this->Session->read('VisitorInfo');

答案 1 :(得分:1)

HRMM。您的整个会话是否被破坏或者您无法读取该索引?我假设你的整个会话都被破坏了。您要重定向到同一域(和子域,如果适用)的页面?大多数情况下,当我遇到这样的问题时,它会与蛋糕积极地破坏会话,特别是如果你的Security.level被设置为高/中等。

如果您的会话确实被销毁,请确保两个域都相同。如果已经是这种情况,请尝试将安全级别移至低,以确保您没有被session.referer_check捕获。

否则你绝对应该能够在beforeFilter()中读取会话。