我遵循 cakephp 文档中的身份验证教程并创建了一个有效的登录系统。
我想做的一件事是让用户在完成登录后重定向到他们最初在未登录时尝试访问的操作。
我相信他们正在访问的页面应该由 Auth 组件中的启动功能在会话中写入 Auth.redirect,但这似乎不起作用。
在我的用户控制器中,我在 beforefilter 中添加了以下内容:
$this->Auth->allow('add', 'login');
因此,当尝试访问编辑操作时,我会自动重定向到登录操作。
在登录操作中,我包括:
debug($this->Session->read());
debug($this->referer());
这是输出会话信息,并且在此会话中没有提及 Auth.redirect,因此 Auth 函数或我自己都无法使用它来重定向用户。
我试过使用 $this->referer 但由于某种原因,当被 auth 函数自动重定向时,也没有跟踪引用者。
有谁知道为什么 auth.redirect 可能没有被写入以及为什么 $this->referer 在被 auth 函数重定向时没有被填充?
我必须注意我在使用 WAMP 的 Windows 机器上。但是,我的添加操作在成功和 debug($this->referer()); 后重定向到登录。发生这种情况时会选择重定向 URL,因此标头必须正常工作。
进一步说明:
通过查看存储在数据库中的会话,我发现了 CakePHP 的问题。
似乎 auth.redirect 存储在会话中,但是由于某种原因,当用户被重定向清除以前的数据时会生成一个新会话。
有没有办法阻止 CakePHP 为用户创建新的会话 ID?