我正在搞乱 cakephp 2.0 的访问列表,到目前为止,我在文档之后创建了一个非常简单的示例。
我已经建立了一个用户表和最重要的功能,如索引、添加、登录 ecc。并且与组表相关(每个用户都属于一个组)。
我还创建了一个包含不同内容(房屋)的“房屋”表。
然后我在 crud 模式下结合 acl 组件设置了 auth,包括 aco 和 aro 树。
到目前为止一切顺利,到目前为止一切正常,我可以允许或拒绝每个用户的单个操作。但是,我想要进一步的访问控制,例如一个用户只能管理一个特定的房子。所以我为每个房子都设置了一个aco,只允许用户对房子进行读取访问,并且只允许对所需房子进行更新访问。但它不会工作!无论我做什么..我都无法访问编辑操作。这是我的树:
Aco:
[1] Houses
[5] House.1
[6] House.2
[2] Users
Aro:
[1] superadmin
[4] User.1
[1] admin
[5] User.2
[7] User.4
[3] customer
[6] User.3
最后是 aros_acos 表:
id aro_id aco_id _create _read _update _delete
4 1 1 1 1 1 1
5 1 2 1 1 1 1
6 2 1 1 1 1 1
7 3 1 0 1 0 0
8 7 1 -1 1 1 -1
9 7 5 1 1 1 1
事实是,如果我尝试快速检查:
var_dump($this->Acl->check(
array('model' => 'User',
'foreign_key' => 4),
array('model' => 'House',
'foreign_key' => 1),
'update'));
它回馈真实!
奇怪...我做错了什么吗?有什么方法可以体面地调试 acl 组件(使用组件正在检查的 acos 和 aros 的信息,查看 ecc。)?