现在我必须缺少ACL控制应用程序中的某些内容。我的用户模型属于称为角色的模型。我在两种模型中都包含了ACL行为。这两个模型都有parentNode函数 - 在Role中,这返回null。在用户的代码如下:CakePHP Acl混淆 - 拒绝访问组,但该组的用户有权访问
public function parentNode() {
if (!$this->id && empty($this->data)){
return null;
}
if (isset($this->data['User']['role_id'])){
$roleId = $this->data['User']['role_id'];
} else {
$roleId = $this->field('role_id');
}
if (!$roleId){
return null;
} else {
return array('Role' => array('id' => $roleId));
}
}
我登录在作为已经ROLE_ID = 8以我阿罗斯表中的用户,用户具有9的PARENT_ID,这对于正确的ARO条目角色。
我创建了以下行动来说明这个问题:
public function permissions(){
$this->autoRender = false;
if($this->Acl->check(array('model'=>'User','foreign_key'=>$this->Auth->user('id')),'Countries')){
echo 'User: Allowed<br />';
}else{
echo 'User: Forbidden<br />';
}
if ($this->Acl->check(array('model'=>'Role','foreign_key'=>$this->Auth->user('role_id')),'Countries')){
echo 'Role: Allowed';
}else{
echo 'Role: Forbidden';
}
}
当我运行的动作,我得到:
User: Allowed
Role: Forbidden
用户条目没有在aros_acos表中的任何条目。该表中唯一的条目是用于角色的。
任何人都可以对此有所了解吗?
谢谢。
编辑 - 为防万一还不清楚,预期的行为将是禁止用户和角色访问此控制器('国家')。
编辑 - 我做分配权限,就像这样:
$this->Acl->deny('City admin','Countries');
我已经在数据库中,这已经工作了验证。
你在哪里分配权限?你有没有检查食谱设置权限? – 8vius
如果你在我的问题上提出了一些问题,也许我可以给你一个手 – 8vius