2009-10-27 49 views
0

我有一个Zend_Acl的大型实现,并且拒绝函数没有按预期工作。它没有得到正确的继承,我还没有解决与群体的冲突。Zend_Acl不按广告标准工作

在我深入代码之前。是否有Zend_Acl知道的任何问题或任何人想分享的高级技巧。

我不得不明确拒绝访问树中的所有孩子,当我只希望拒绝访问父母。

我有多个组和各种拒绝/允许在同一个对象上。该手册指出,最后添加的组和数组是先检查的...这似乎并不是这种情况,它似乎检查最具体的最一般(空)权限。

如果我将权限放在树的根上,当我将更多的权限放到树上时,它们停止工作,停止继承。

+0

我们一定需要查看一些代码才能找到任何问题。具体来说,您运行Zend_Acl :: isAllowed()方法的代码和ACL addRole()的示例允许()和拒绝()语句。 – Mark 2009-10-28 23:44:59

回答

0

对我而言,ACL按预期工作。如果你这样做是有预期的行为: *允许所有 默认模块*允许管理员和superadmins管理模块 *否认管理模块/用户为管理员 *允许superadmins

管理模块/用户CONTROLER CONTROLER用户无法访问管理员。 Asdmins无法访问管理员。 Superadmins可以访问所有内容。

+0

我正在研究一个拥有1000个动态页面(即资源)的Intranet知识库,我有大约30个组(所有级别,没有继承),我有权限NULL,查看和编辑(编辑包括创建/删除/移动等)。如果我给'超级用户'允许(NULL)和'everyone'允许(查看)在根目录下,然后'每个人'拒绝(NULL)在分支之下的某个地方,'everyone'拒绝(NULL)规则将失去继承。然后,我可以将权限放在单独的页面上,但继承停止。重新排列用户所属的“组”的顺序并没有什么区别。 – Simon 2009-10-27 22:23:21