我们应该使用 Voters 还是 ACL?两者的 advantages/disadvantages 是多少?有什么陷阱吗?

Should we use Voters or ACL? What are the advantages/disadvantages of both? Any pitfalls?

我们正在构建一个应用程序来管理实习(例如“Internship 2nd master Medicine”)。该应用程序正在 Symfony2 中构建。 我们的用户可以担任一个或多个角色(例如教练也可以是主管)。 以下示例中使用的角色是:

角色不限于上述。

我们拥有何种权限的一些示例:

如您所见,权限系统不仅限于具有特定角色的用户,而且角色对实体具有特定权限。有时它会更复杂一些,权限仅限于数据的一个子集。 请注意,我们每年将有大约 5000 名学生和 4000 名导师使用该应用程序。学生数据库每年都会增长1000+。

我的问题:我们应该使用 Voters、ACL,还是两者的结合……?有什么优点和缺点?有什么陷阱吗?

欢迎任何建议!

使用选民。 ACL 组件 has been extracted from Symfony core (Symfony 2.8/3.0) 因为它没有得到积极维护并且(太)复杂了。

对于选民来说一切都是可行的,现在它是新项目的推荐方式。

ACL 太复杂了,就像 Kévin 所说的那样,它会脱离 symfony 核心。选民是要走的路,简单得多,也足够强大。