我们应该使用选民还是ACL?两者的优点/缺点是什么?任何陷阱?

时间:2015-10-07 11:28:57

标签: security symfony permissions acl roles

我们正在建立一个管理实习的应用程序(例如“实习第二医学大师”)。该应用程序正在Symfony2中构建。 我们的用户可以拥有一个或多个角色(例如,教练也可以是主管)。 以下示例中使用的角色是:

  • 学生(显而易见)
  • 管理员(管理实习)
  • 主管(公司学生导师)
  • 教练(在一定的实习期间指导一组学生)

角色不限于上述角色。

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

  • 有时候它很容易:具有“管理员”角色的所有用户都可以访问某个页面。但在99%的情况下,它并不像这样简单。
  • 所有用户都可以查看词汇表项目,但只能查看链接到用户以某种方式链接到的教员的项目。例如,学生与实习相关联,该实习与某个教师有关。主管以同样的方式与实习相关联。具有“管理员”角色的用户仅是某个教师的教师协调员。因此,有一大堆规则决定用户是否与一个或多个院系相关联。
  • 学生可以提供他/她所在的实习机会的偏好,但只有在实习期间以及实习的某些特定日期之间有优先权。
  • 主管可以邮寄学生,但只限那些分配给他/她的学生。
  • 教练可以看到学生的详细信息,但只能看到他/她是教练的学生。管理员有权将学生分配给教练。
  • ...

正如您所看到的,权限系统不仅限于具有特定角色的用户,还包括对实体具有特定权限的角色。有时它稍微复杂一些,权限仅限于数据子集。 请注意,我们每年将有大约5000名学生和4000名主管使用该应用程序。学生数据库每年将以1000 +增长。

我的问题:我们应该使用选民,ACL,两者的结合,......?有哪些优点和缺点?有没有陷阱?

欢迎任何建议!

2 个答案:

答案 0 :(得分:2)

使用选民。 ACL组件has been extracted from Symfony core(Symfony 2.8 / 3.0),因为它没有被主动维护并且(太)复杂。

一切都可以与选民合作,现在是新项目的推荐方式。

答案 1 :(得分:0)

ACL过于复杂,就像凯文所说的那样,它将脱离symfony核心。选民是可行的方式,更加简单和强大。