我试图在我的本地开发环境中禁用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.
您可以通过这种方式实现相同的目标:
在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)