Zend_Acl在默认情况下不允许每个角色对每个特权的每个资源直到或者除非特别允许它们使用 。 在我的系统中,一个用户可以有许多角色,权限被分配给这些角色。 我只是让所有用户角色遍历所有用户角色,并检查isAllowed()是否为每个角色提供资源和特权。如何检测角色的具体拒绝?
为e.g如果当前国土资源是“富”和特权“酒吧”
public function checkAllow($roles, $resouse, $privilege)
{
foreach ($roles as $role) {
if ($acl->isAllowed($role, 'foo', 'bar') === true)
return true;
}
return false;
}
现在我要实现对这些角色的排序顺序即assinged将有更多的偏好,然后第二个等等的第一个角色。
问题来了,我怎么能检测特定的拒绝像
$this->deny('member','foo','bar');
一些角色虽然遍历所有角色,我怎么能知道给定的角色是specificly“denyied”? 所以在那一点上,我可以打破foreach循环,并返回false
。
我将添加实际的代码来做到这一点,一旦我知道这是你要解决 – 2011-08-17 18:20:20