0

我遵循 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?

4

1 回答 1

0

我已经确定了为什么 auth.redirect 不起作用的问题。

我在 core.php 中设置了一个自定义会话 cookie 名称,由于某种原因会话组件不能使用自定义 cookie 名称,因此在每个页面上创建一个新会话。

如果您遇到会话问题并且您有一个自定义会话 cookie 名称,请将其重置为默认值,它将起作用。

我将把它作为一个 bug 提交给 CakePHP。

进一步说明

我发现问题是由于 . 在 cookie 名称中,没有 this 。自定义 cookie 名称按应有的方式执行。

于 2012-05-30T19:24:53.950 回答