ACL 实现 - 哪种方式性能更高:拒绝所有人的访问


acl implementation - which way is more performant: deny acces for all?

我正在尝试实现 ACL,我想听听您对哪种可能是最佳(性能更高)的方法发表意见:

是拒绝每个人的访问权限并根据每个用户授予权限更好,还是默认为每个人授予访问权限并删除权限更好。

更具体地说,假设我有 3 个用户:超级管理员、客户端管理员、基本成员。

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

此时,我创建了一个函数,在其中列出了用户的所有权限,并在每个资源中检查当前UserRole和授权,如下所示:

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

所以。。我想让你的意见知道是否最好检查一下:如果他有权限,请展示行动!或者,如果他没有权限,则隐藏操作。(例如:对于刚刚对其他用户具有读取权限的客户管理员,我应该隐藏"编辑"按钮,还是始终隐藏,如果他没有权限,则显示更好!

我认为这主要取决于您的应用程序。但我通常倾向于拒绝所有内容并授予访问权限。这样,您就不太可能忘记访问权限并将人们带到他们不应该去的地方。