在本地开发环境中禁用CakePHP ACL/ACO检查

cni*_*ini 1 cakephp

我试图在我的本地开发环境中禁用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']);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在运行CakePHP 2.x.

tha*_*tah 5

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

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

Configure::write('Auth.enabled', 0);
Run Code Online (Sandbox Code Playgroud)

具有明确的配置通常比"自动检测"您的环境更受欢迎.

然后,在你的AppController里面;

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

请参阅公开行动

或者,完全禁用组件:

public function beforeFilter()
{
    if(0 === Configure::read('Auth.enabled')) {
        $this->Components->disable('Acl');
        $this->Components->disable('Auth');
    }
}
Run Code Online (Sandbox Code Playgroud)