Cakephp 2 ACL错误\u太多\u重定向

Cakephp 2 ACL错误\u太多\u重定向,php,cakephp,cakephp-2.0,acl,Php,Cakephp,Cakephp 2.0,Acl,我正在尝试实现以下ACL教程: 但是,当我尝试转到[my_site]/users/addERR_TOO_MANY_重定向错误时,我遵循了所有说明 我在Cakephp网站上发现: 例如,当我们有一个接收数据的元素时,就会发生这种情况 从一个控制器的方法,以及这个方法的实现 要求执行登录将创建一个无限循环 最终将导致浏览器拒绝重定向 他们建议将此作为解决方案: function beforeFilter () { $ this -> Auth -> allow ( 'CONTR

我正在尝试实现以下ACL教程:

但是,当我尝试转到[my_site]/users/addERR_TOO_MANY_重定向错误时,我遵循了所有说明

我在Cakephp网站上发现:

例如,当我们有一个接收数据的元素时,就会发生这种情况 从一个控制器的方法,以及这个方法的实现 要求执行登录将创建一个无限循环 最终将导致浏览器拒绝重定向

他们建议将此作为解决方案:

function  beforeFilter ()  { 
 $ this -> Auth -> allow ( 'CONTROLLER_NAME' ); 
}
这似乎不起作用

如果我从以下位置更改AppController:

public function beforeFilter() {
    $this->Auth->allow('index', 'view', 'login', 'add');
}
致:

我不再收到错误,但被重定向到[我的网站]/users/login

关于我做错了什么而无法查看用户添加页面的任何建议? 蒂亚

用户控制器:

public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('add');
    }
Public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Invalid username or password, try again'));
        }
    }
}
登录功能(UsersController):

验证组件加载程序:

public $components = array(
        'Session',
        'RequestHandler',
        'Auth' => array(
            'loginRedirect' => array('controller' => 'projects', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
        )
    );

您所遇到的错误与ACL无关,但是Auth组件拒绝访问您的
UsersController
add和login函数,它正试图将用户重定向到这些函数。通过在
用户控制器
(而不是
应用控制器
)中添加此行,确保
添加
登录
功能是公共的:


您现在遇到的循环是因为add和login函数不是公共的,因此循环看起来像:
add->Unauthorized->login->Unauthorized->login
。。。等等。

请将您的
beforeFilter()
Auth->allow(“\u CONTROLLER\u NAME”)
更改为:

public function beforeFilter(){
    $this->Auth->allow();
}

希望这对你有用

我终于在帮助下解决了这个问题,布莱恩:

您是否有requestAction()代码?如果是这样,请尝试将其添加到


请在筛选前向我们显示您的UserController
方法。编辑并添加了我的问题谢谢您的建议,我使用您提供的代码编辑了UsersController,但仍然得到相同的结果:(@Ronnyvdb如果您碰巧使用Chrome作为浏览器,请按F12打开控制台,转到“网络”选项卡,然后打开您想要访问的页面。它应该能够准确地说明循环将一直指向何处。显然,这不是登录功能,而是其他功能。这是控制台的屏幕截图:这里有一些有趣的东西……I c在UsersController中挂起了我的登录函数,只是回显“test”;我没有收到重定向错误,我编辑了我的问题并添加了登录函数,你知道我做错了什么吗?你的组件“构造函数”是什么样子的?你能添加加载
AuthComponent
(从您的
AppController
UsersController
)到您的问题?
public function beforeFilter() {
    $this->Auth->allow(array('add', 'login'));
}
public function beforeFilter(){
    $this->Auth->allow();
}
AppController::beforeFilter() 

if (isset($this->params['requested'])) $this->Auth->allow($this->action);