我正在使用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()。
答案 0 :(得分:2)
尝试设置会话值,如下所示:
$this->Session->write("VisitorInfo.visitor","value");
然后你不会有任何问题从app_controller使用:
读取它$this->Session->read('VisitorInfo');
答案 1 :(得分:1)
HRMM。您的整个会话是否被破坏或者您无法读取该索引?我假设你的整个会话都被破坏了。您要重定向到同一域(和子域,如果适用)的页面?大多数情况下,当我遇到这样的问题时,它会与蛋糕积极地破坏会话,特别是如果你的Security.level被设置为高/中等。
如果您的会话确实被销毁,请确保两个域都相同。如果已经是这种情况,请尝试将安全级别移至低,以确保您没有被session.referer_check捕获。
否则你绝对应该能够在beforeFilter()中读取会话。