ACL组件无法正常工作

时间:2013-11-15 11:13:36

标签: cakephp cakephp-2.0 acl

我在使用ACL组件时遇到问题:

当我在添加操作中保存用户时,我运行此代码:

        $aro = $this->Acl->Aro;
            $aro->create();
            $aro->save(array(   
                'alias' => $this->request->data['User']['username'],
                'parent_id' => $this->request->data['User']['role_id'],
                'model' => 'User',
                'foreign_key' => $this->request->data['User']['id'],
        ));

但它会导致错误,说创建方法不存在。

哪种方法更好的实现ACL?

我正在尝试使用上面的代码和parentNode以及bindNodes的代码,但我正在努力解决它......

1 个答案:

答案 0 :(得分:0)

首先,' parent_id'应该是ARO表中引用角色的 aro节点的id,不是role_id 本身。你可以通过以下方式获得它:

$parentId = ClassRegistry::init('Aro')->field('id', array('model' => 'Role', 'foreign_key' => $this->request->data['User']['role_id']));

但是,我建议将AclBehavior附加到User和Role模型以自动更新ARO表。请仔细阅读本书中的this section。它直接类比您正在做的事情 - 只需将教程中的Group替换为Role即可。使用该行为还可以帮助您使用AclBehavior :: node()方法,该方法可以帮助您轻松获取节点引用,而无需直接在Aro和Aco模型上查找。