我们应该使用投票人还是ACL?两者的优点/缺点是什么?任何缺陷



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

  • 学生(明显)
  • 管理员(管理实习)
  • 主管(学生在公司的导师)
  • 教练(指导一组学生进行某项实习)

角色不限于上述角色。

我们有哪些权限的一些例子:

  • 有时候很简单:所有具有"管理员"角色的用户都可以访问某个页面。但99%的情况并非如此简单。
  • 所有用户都可以查看术语表项,但只能查看那些以某种方式链接到用户所在院系的项。例如,学生与实习联系在一起,实习与某个教员联系在一起。主管与实习也是同样的道理。具有"Administrator"角色的用户仅是某个教员的教员协调员。所以有一大堆的规则来决定用户是否链接到一个或多个院系。
  • 学生可以选择与他/她相关的实习,但必须在实习的特定日期之间给出实习的偏好。
  • 导师可以给学生发邮件,但只能发给分配给他/她的学生。
  • 教练可以看到学生的详细信息,但只能看到他/她所指导的学生的详细信息。管理员有权将学生分配给教练。

可以看到,权限系统不仅限制用户具有一定的角色,而且一个角色对实体具有一定的权限。有时情况会稍微复杂一些,权限被限制在数据的一个子集上。请注意,我们每年将有大约5000名学生和4000名导师使用该应用程序。学生数据库将以每年1000+的速度增长。

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

欢迎任何建议!

使用选民。ACL组件已经从Symfony核心(Symfony 2.8/3.0)中提取出来,因为它不是主动维护的,而且(太)复杂。

选民什么都可以做,现在这是新项目的推荐方式。

ACL太复杂了,就像ksamuvin说的那样,它将脱离symfony核心。

最新更新