Symfony2 中的 ACL 和用户角色有什么区别
我是symfony2的新手,我对这些术语以及这些术语的用例感到困惑。任何人都可以解释一下两者之间有什么区别吗?
- 前交叉韧带
- 角色
- 组
我是symfony2的新手,我对这些术语以及这些术语的用例感到困惑。任何人都可以解释一下两者之间有什么区别吗?
让我们举一个最基本的例子:一个博客应用程序(再次)。
构建博客应用程序时,通常需要对用户进行身份验证并授权他们执行特定操作,例如:
角色表示在应用程序中硬编码的一组权限。检查是否允许用户向博客添加新的参与者时,您的代码会检查当前用户是否具有角色“ROLE_ADMIN”。
这就是为什么鲍勃(他有ROLE_ADMIN)被允许添加一个爱丽丝作为新的贡献者。请参阅有关安全性/角色的 Symfony 文档。
当用户属于某个组时,她通常有权获得一组角色。Alice 属于“贡献者”组,因此她拥有角色ROLE_STATS(允许她查看博客统计信息)和ROLE_POST(允许她发布新的博客文章)。
同样,这个概念在Symfony中不是硬编码的,但开发人员通常这样认为。请参阅有关使用组管理数据库中的角色的一些内容。
当您需要根据角色 + 域对象做出授权决策时,访问控制列表会派上用场。
爱丽丝只能编辑她写的博客文章。要检查此授权,您需要 Alice 的角色和她尝试编辑的 Post 模型。Symfony 关于 ACL 的文档也非常清楚这一点。
哦,鲍勃被允许编辑所有博客文章,因为他有ROLE_ADMIN。此处的决策仅基于角色。