我正在尝试在本地开发环境中禁用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
答案 0 :(得分:5)
你可以这样做:
在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');
}
}