【问题标题】:CakePHP Auth.redirect not being writtenCakePHP Auth.redirect 没有被写入
【发布时间】:2012-06-04 05:01:40
【问题描述】:

我已经按照 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?

【问题讨论】:

  • loginRedirect 是否设置为 null (应该是默认设置,所以你修改过吗?)另外,env('HTTP_REFERER') 被重定向到登录操作后的输出是什么
  • @tigrang 我已经尝试设置和取消设置 loginRedirect,但对写入的 Auth.redirect 没有任何影响。 env('HTTP_REFERER') 出现空白。
  • $_SERVER$_ENV 是空的吗?看你的php.ini或者phpinfo()variables_order的值是多少
  • @tigrang 在旁注中,我尝试使用 $this->set('env',$_ENV('HTTP_REFERER'));和 $this->set('env',$_SERVER('HTTP_REFERER'));但它在我尝试显示它们之前就产生了一个未定义的索引错误。

标签: php cakephp cakephp-2.1


【解决方案1】:

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

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

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

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

补充说明

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多