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

Per*_*ack 1 php acl zend-framework access-control rbac

我正在尝试实现一个ACL,我想你的意见,哪个可能是最好的(更高性能)方式:

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

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

ClientAdmin管理员几乎相同的权限的超级管理员,如见在系统中注册的每个用户,但他不能做任何修改,只是"读".

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

$acl = $this->generateAcl($roleId, AclResourceBean::ENTER_DATA, 'read'));
Run Code Online (Sandbox Code Playgroud)

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

Lee*_*vis 5

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