【发布时间】:2011-12-01 16:00:37
【问题描述】:
我最近从 CakePHP 1.2 升级到 CakePHP 1.3,现在我有一些代码让用户陷入重定向循环。这是在用户成功登录并决定单击链接来管理电子邮件之后。
我在控制器中有一些代码,其中 index() 方法将检查当前用户是否是管理员。如果用户不是管理员,它将执行以下操作:
function index()
{
if ($this->Session->read('is_admin') < 1) {
$this->redirect(array('controller' => 'emails', 'action' => 'view', 'id' => $this->Session->read('username')));
}
//...more code...
}
这旨在将用户重定向到 view() 方法并仅显示他们的电子邮件,而不是每个人的电子邮件。当我调试时发生了什么是重定向一直在 index() 方法中结束。
CakePHP 中是否有我遗漏的新内容?使用名称“视图”作为控制器中的操作是禁忌吗?
* 编辑 *
好的,我写这篇文章有点为时过早。正在访问 view($username) 方法中的代码。但问题是 $username 未定义,如果未定义,我有一些客户端代码然后重定向回 index() 操作。
我确实检查了原始重定向,并且 $this->Session->read('username') 填充了用户名,但它只是没有在 view() 的 $username 参数中传递。
谢谢!
【问题讨论】:
-
它是否到达重定向?或跳过它?您的应用程序是否使用 ACL?用户是否有权访问“查看”操作?
-
嘿 Moz,我用更多信息更新了我的问题。要回答您的问题,它确实会进行重定向,并且我的应用确实使用 ACL,并且用户可以访问“查看”操作。
-
由于我还不能回答我自己的问题,所以我会在这里回答:原来重定向签名从 1.2 更改为 1.3:book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3 Library Classes > Router // CakePHP 1.2 way $ this->redirect(array('controller' => 'emails', 'action' => 'view', 'id' => $this->Session->read('username'))); // CakePHP 1.3 方式 $this->redirect(array('controller' => 'emails', 'action' => 'view', $this->Session->read('username')));
标签: php cakephp cakephp-1.3