【问题标题】:CakePHP Acl confusion - denied access to group but user of that group has accessCakePHP Acl 混淆 - 拒绝访问组,但该组的用户有权访问
【发布时间】:2011-11-12 07:16:09
【问题描述】:

现在我必须在我的 ACL 控制的应用程序中遗漏一些东西。我的用户模型属于一个名为角色的模型。我在两个模型中都包含了 ACL 行为。两个模型都有 parentNode 函数 - 在 Role 中,这返回 null。在用户中,代码如下:

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 的用户身份登录。在我的 aros 表中,该用户的 parent_id 为 9,这是正确角色的 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 表中没有任何条目。该表中的唯一条目是针对角色 aros。

任何人都可以对此有所了解吗?

谢谢。

编辑 - 以防万一不清楚,预期的行为将是禁止用户和角色访问此控制器(“国家/地区”)。

编辑 - 我确实分配了权限,如下所示:

    $this->Acl->deny('City admin','Countries');

我已在数据库中验证此方法有效。

【问题讨论】:

  • 你在哪里分配权限?您是否查看过有关设置权限的说明书?
  • 如果您对我的问题有所了解,也许我可以帮助您

标签: cakephp cakephp-1.3 acl


【解决方案1】:

因为你还没有回答我的问题,所以我只能在这里冒险了。你查过this?

由于您没有显示它,因此无法确定,但您应该按照该链接中指定的方式设置您的权限和允许的操作。

【讨论】:

  • 谢谢,我确实分配了我的权限,编辑了我的问题以包含这个。
  • 将拒绝中的“国家/地区”更改为控制器/国家/地区
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2012-04-07
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多