Symfony2 中的 ACL 和用户角色有什么区别

2022-08-30 21:56:22

我是symfony2的新手,我对这些术语以及这些术语的用例感到困惑。任何人都可以解释一下两者之间有什么区别吗?

  1. 前交叉韧带
  2. 角色

答案 1

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

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

  • 授权 Bob 向博客添加新的贡献者
  • 授权爱丽丝创建新的博客文章
  • 授权爱丽丝编辑自己的博客文章
  • 授权鲍勃删除爱丽丝的博客文章

什么是角色

角色表示在应用程序中硬编码的一组权限。检查是否允许用户向博客添加新的参与者时,您的代码会检查当前用户是否具有角色“ROLE_ADMIN”。

这就是为什么鲍勃(他有ROLE_ADMIN)被允许添加一个爱丽丝作为新的贡献者。请参阅有关安全性/角色的 Symfony 文档

什么是组

当用户属于某个组时,她通常有权获得一组角色。Alice 属于“贡献者”组,因此她拥有角色ROLE_STATS(允许她查看博客统计信息)和ROLE_POST(允许她发布新的博客文章)。

同样,这个概念在Symfony中不是硬编码的,但开发人员通常这样认为。请参阅有关使用组管理数据库中的角色的一些内容

ACL

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

爱丽丝只能编辑她写的博客文章。要检查此授权,您需要 Alice 的角色和她尝试编辑的 Post 模型。Symfony 关于 ACL 的文档也非常清楚这一点。

哦,鲍勃被允许编辑所有博客文章,因为他有ROLE_ADMIN。此处的决策仅基于角色。


答案 2

推荐