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

时间:2013-04-02 19:26:43

标签: 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']);
    }
}

我正在运行CakePHP 2.x

1 个答案:

答案 0 :(得分:5)

你可以这样做:

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

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

具有明确的配置通常优先于“自动检测”您的环境。

然后,在AppController中;

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

请参阅Making actions public

或者,完全禁用组件:

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