Zend_Acl 默认不允许每个角色对每个资源的每个特权,直到或除非它们被特别允许。在我的系统中,用户可以拥有许多角色,并且权限被分配给这些角色。我只是让所有用户角色遍历所有角色并检查 isAllowed() 以获得每个角色的给定资源和特权。
例如,如果当前资源是 'foo' 而权限是 'bar'
public function checkAllow($roles, $resouse, $privilege)
{
foreach ($roles as $role) {
if ($acl->isAllowed($role, 'foo', 'bar') === true)
return true;
}
return false;
}
现在我想对这些角色实施排序顺序,即分配的第一个角色将有更多的偏好,然后是第二个,依此类推。
问题来了,我如何检测对某些角色的特定拒绝,例如
$this->deny('member','foo','bar');
在遍历所有角色时,我如何知道给定的角色被明确“拒绝”?所以到那时我可以跳出 foreach 循环并返回false
。