2

我试图在我的本地开发环境中禁用 ACL/ACO 检查,因为每次创建新方法或控制器时同步 ACO 表非常耗时。我在弄清楚如何有条件地做到这一点时遇到问题。我在 AppController 中尝试了以下代码,但没有成功:

public function beforeFilter() {
    parent::beforeFilter();

    // disable ACL component in local development environments
    if(preg_match('/\.local/',FULL_BASE_URL)){
        unset($this->components['Acl']);
        unset($this->components['Auth']['authorize']);
    }
}

我正在运行 CakePHP 2.x

4

1 回答 1

6

您可能可以通过这种方式实现相同的目的:

在您的 app/Config/core.php 中添加配置

Configure::write('Auth.enabled', 0);

与“自动检测”您的环境相比,通常首选显式配置。

然后,在您的 AppController 中;

public function beforeFilter()
{
    if(0 === Configure::read('Auth.enabled')) {
        $this->Auth->allow();
    }
}

请参阅公开操作

或者,完全禁用组件:

public function beforeFilter()
{
    if(0 === Configure::read('Auth.enabled')) {
        $this->Components->disable('Acl');
        $this->Components->disable('Auth');
    }
}
于 2013-04-02T20:21:56.750 回答