acl实现 - 哪种方式更高效:拒绝所有人访问?

时间:2012-06-19 08:58:57

标签: php zend-framework acl access-control rbac

我正在尝试实施一个ACL,我希望你的意见是哪种方式可以做到最好(更高效):

拒绝访问每个人并根据每个用户授予权限是否更好,或者默认情况下为每个人授予访问权限更好,并删除权限。

尝试更具体,想象我有3个用户:SuperAdmin,ClientAdmin,BasicMember。

ClientAdmin 管理员拥有与SuperAdmin几乎相同的权限,例如查看系统中注册的每个用户,但他无法进行任何更改,只需“阅读”。

此时,我创建了一个函数,其中列出了用户的所有权限,在每个资源中,我检查currentUserRole和授权执行如下操作:

$acl = $this->generateAcl($roleId, AclResourceBean::ENTER_DATA, 'read'));

所以..我希望你的意见知道是否最好检查:如果他有权限,showAction!或者如果他没有许可,请执行hideAction。 (例如:对于刚刚读取其他用户权限的ClientAdmin,我应该隐藏“编辑”按钮,还是总是隐藏它更好,如果他没有权限,则显示!

1 个答案:

答案 0 :(得分:5)

我认为这主要取决于您的申请。但我通常倾向于拒绝所有并授予访问权限。这样你就不太可能忘记访问权限,并让人们不应该这样做。