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

use*_*097 18 php symfony

我是symfony2的新手,我对这些术语和用例感到困惑.任何人都可以解释有什么区别

  1. ACL
  2. 角色

Bri*_*zel 38

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

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

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

什么是角色

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

这就是为什么Bob(他有ROLE_ADMIN)被允许添加Alice作为新的贡献者.请参阅有关安全性/角色的Symfony文档.

什么是集团

当用户属于某个群组时,她通常会获得一组角色.Alice属于"贡献者"组,因此她拥有角色ROLE_STATS(她可以查看博客统计信息)和ROLE_POST(她可以发布新的博客条目).

同样,这个概念在Symfony中没有硬编码,但开发人员通常会这样认为.请参阅使用Groups管理数据库中的角色.

访问控制列表

当您需要根据Role +域对象做出授权决策时,访问控制列表会派上用场.

允许Alice编辑她编写的博客条目.要检查此授权,您需要Alice的角色和她尝试编辑的Post模型. Symfony关于ACL的文档也很清楚.

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