我将CakePHP与Auth和ACL组件一起使用。我的页面可以加载非注册用户,但如果我尝试以注册用户身份登录,我会在浏览器中获得无限重定向循环。调试浏览器重定向循环
我确定这是某种权限问题,但即使对拥有所有权限的用户也存在问题。防止这种行为的唯一方法是在我的AppController的beforeFilter方法中允许'*'。
调试这类问题的最佳方法是什么?
谢谢!
我将CakePHP与Auth和ACL组件一起使用。我的页面可以加载非注册用户,但如果我尝试以注册用户身份登录,我会在浏览器中获得无限重定向循环。调试浏览器重定向循环
我确定这是某种权限问题,但即使对拥有所有权限的用户也存在问题。防止这种行为的唯一方法是在我的AppController的beforeFilter方法中允许'*'。
调试这类问题的最佳方法是什么?
谢谢!
进行调试,尝试在AppController::beforeFilter()
将这个第一件事:
$this->log("Here: {$this->here}, coming from: " . $this->referer(), LOG_DEBUG);
这将写入日志中/app/tmp/logs/debug.log
。你也可以用在AppController
重写重定向方法结合起来的:
function redirect($url, $status = null, $exit = true) {
$trace = debug_backtrace();
$this->log("Redirecting to: " . Router::url($url) . ", initiated in {$trace[1]['file']} on line {$trace[1]['line']}", LOG_DEBUG);
parent::redirect($url, $status, $exit);
}
我要检查的第一件事是用户控制器的登录方法。如果正确实施,您通常会将所有未经验证/授权的流量路由到登录控制器。但是,如果你没有向公众提供许可,它很可能会导致无限循环。因此,请检查app_controller(或存储Auth/ACL权限的任何位置)并确保Users.login可公开访问。
还要确保您检查在你的验证组件在你app_controller的设置设置正确。
我倾向于明确定义他们。也许检查这样的事情,http://www.webdevelopment2.com/cakephp-auth-component-tutorial-1/只是为了确定它的设置是否正确。
,我发现另一件事是偶然,beforeFilter()有时敲除验证在你的app_controller设置,所以也许尝试在你的控制器有
parent::beforeFilter();
为了确保您的app_controller的beforeFilter()是正在执行。
这正是我所期待的。谢谢! – 2010-03-09 13:06:09