CakePHP 通过组名而不是 ID 检查权限
Posted
技术标签:
【中文标题】CakePHP 通过组名而不是 ID 检查权限【英文标题】:CakePHP check permission by group name instead of 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 给我一个错误,它找不到节点。
【问题讨论】:
【参考方案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() )以上是关于CakePHP 通过组名而不是 ID 检查权限的主要内容,如果未能解决你的问题,请参考以下文章