我现在使用 cakephp 有一段时间了,刚开始使用 ACL。我已经启动并运行它,除了一件事。如何找到当前用户可用的所有文档?
我在 Aros 表中设置了几个组(超级用户、管理员和普通用户)。我有几个文档应该都可供超级用户和管理员访问,但只有特定的文档可供普通用户访问。我想出的最接近的事情是:
$this->data=$this->Document->find('all',array('fields'=>array('Document.id','Document.filename','Document.title')));
foreach($this->data as $i=>$document){
if($this->Acl->check(array('model'=>'User','foreign_key'=>$this->Session->read('User.id')),array('model'=>'Document','foreign_key'=>$document['Document']['id']))!=1){
unset($this->data[$i]);
}
}
上述“解决方案”的问题在于它首先查询所有文档(在不久的将来会变成数千个),然后通过从 $this->data 数组中删除所有不可访问的文档来将其降低到可能的几个文档...