Symfony2中ACL和用户角色之间的区别是什么

时间:2012-01-13 09:09:45

标签: php symfony

我是symfony2的新手,我对这些术语和用例感到困惑。 谁能解释一下有什么区别

  1. ACL
  2. 角色

1 个答案:

答案 0 :(得分:38)

让我们来看一个最基本的例子:博客应用程序(再次)。

构建博客应用程序时,通常需要对用户进行身份验证并授权他们执行特定操作,例如:

  • 授权Bob为博客添加新的撰稿人
  • 授权Alice创建新的博客文章
  • 授权Alice编辑自己的博客文章
  • 授权Bob删除Alice的博客文章

什么是角色

角色代表一组权限,在您的应用程序中进行了硬编码。 在检查是否允许用户向博客添加新的贡献者时,您的代码会检查当前用户是否具有角色" ROLE_ADMIN"。

这就是为什么Bob(他有ROLE_ADMIN)被允许添加Alice作为新的贡献者。 请参阅Symfony documentation on Security/Roles

什么是小组

当用户属于某个群组时,她通常拥有一组角色。 Alice属于小组" Contributors",因此她拥有角色ROLE_STATS(她允许查看博客统计信息)和ROLE_POST(她允许发布新博客条目)。

同样,这个概念在Symfony中没有硬编码,但开发人员通常会这样认为。 请参阅some bit on managing Roles in a database with Groups

的ACL

当您需要根据对角色+域对象进行授权决策时,访问控制列表会派上用场。

允许Alice编辑她编写的博客条目。要检查此授权,您需要Alice的角色以及她尝试编辑的帖子模型。 Symfony's documentation on ACLs对此也很清楚。

哦,Bob可以编辑所有博客条目,因为他有ROLE_ADMIN。这里的决定仅基于角色。