我正在使用 CakePHP 创建一个应用程序,并且在尝试找出该应用程序的权限系统时遇到了心理障碍。我已将其缩小为几种不同的方法,并且我正在寻找一些信息,说明哪种方法最容易实现和 b) 最有效(显然这两者之间可以进行权衡)。
该应用程序有许多不同的模型,但为简化起见,我将仅使用用户、部门和事件。我希望能够在每个模型上单独控制每个用户的 CRUD 权限。
蛋糕 ACL
虽然文档很少,但我对 ACL 系统的工作原理有了一定的了解,并考虑按如下方式创建 ARO:
[1]user
create
read
update
delete
[2]department
...
等等。这需要用户在许多不同的组中,据我所见,Cake 并不容易支持这一点。是否有更好的方法来做到这一点,或者 ACL 不适合这种情况?
数据库中的权限标志
这个非常简单,显然在用户的记录中有一个标志
create_users
,read_users
等等。对于 4-5 个模型,这意味着 16-20 个权限字段,这让我考虑使用位掩码或使用连接表。其中一个比另一个更好吗?哪一个更快且开销更少?
总的来说,我想我真的很想知道从效率和易于开发的角度来看,哪种方法在应用程序的规模上最有意义。如果您有过去项目的经验,我也愿意接受有关如何解决此问题的其他建议。提前致谢!