【问题标题】:CakePHP check permission by group name instead of IDCakePHP 通过组名而不是 ID 检查权限
【发布时间】:2014-06-25 16:01:05
【问题描述】:

我正在使用 CakePHP 2.5.2,我想做一个 ACL 检查是否允许用户使用所需的 aco。 这可以通过组名而不是 groupID 来检查吗?

if ($this->Acl->check(array('model' => 'Group', 'name' => $aroName), $aco)) 

当我使用它时,CakePHP 给我一个错误,它找不到节点。

【问题讨论】:

    标签: cakephp acl


    【解决方案1】:

    API,check 方法接受:

    string|array|Model $ref 可选 null

    Array with 'model' and 'foreign_key', model object, or string value
    

    你可以尝试通过名称找到组对象,然后将其传递给Acl->check

    编辑:

        $this->loadModel('Group');
        $this->Group->recursive = -1;
        $node = $this->Group->findByName('Admin');
        CakeLog::write('debug',json_encode($this->Acl->check($node,'Users')));
    

    【讨论】:

    • 这就是我在我的问题示例中展示的内容。这对我不起作用。
    • 你没有传递一个模型对象只是一个数组:在 AclNode.php 行 130 130: } elseif (is_object($ref) && $ref instanceof Model) { 131: $ref = array(' model' => $ref->name, 'foreign_key' => $ref->id);
    • 你能举个例子说明如何将对象传递给它吗?
    • 更新了答案,我已经在 AppController.php 的 beforeFilter 中尝试了以下内容,只要您可以加载必要的东西,它应该可以在任何地方工作(尝试 ClassRegistry::init('Group'); 如果你不能使用 loadModel() )
    猜你喜欢
    • 2012-09-06
    • 2011-11-30
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多