我是 symfony2 的新手,我对这些术语以及这些术语的用例感到困惑。 谁能解释一下有什么区别
- ACL
- 角色
- 群组
最佳答案
让我们举一个最基本的例子:博客应用程序(再次)。
在构建博客应用程序时,您经常需要对用户进行身份验证并授权他们执行特定操作,例如:
- 授权 Bob 向博客添加新贡献者
- 授权 Alice 创建新的博文
- 授权 Alice 编辑她自己的博文
- 授权 Bob 删除 Alice 的博文
什么是角色
角色代表一组权限,硬编码在您的应用程序中。 在检查是否允许用户向博客添加新贡献者时,您的代码会检查当前用户是否具有角色“ROLE_ADMIN”。
这就是为什么允许 Bob(他拥有 ROLE_ADMIN)添加 Alice 作为新贡献者的原因。 见 Symfony documentation on Security/Roles .
什么是组
当用户属于某个组时,她通常被授予一组角色。 Alice 属于“贡献者”组,因此她拥有角色 ROLE_STATS(允许她查看博客统计信息)和 ROLE_POST(允许她发布新博客条目)。
同样,这个概念在 Symfony 中没有硬编码,但开发人员通常是这样认为的。 见 some bit on managing Roles in a database with Groups .
ACL
当您需要根据角色 + 域对象做出授权决定时,访问控制列表会派上用场。
Alice 只能编辑由她撰写的博客条目。要检查此授权,您需要 Alice 的角色和她尝试编辑的 Post 模型。 Symfony's documentation on ACLs这一点也很清楚。
哦,Bob 可以编辑所有博客条目,因为他拥有 ROLE_ADMIN。此处的决定仅基于角色。
关于php - Symfony2中ACL和用户角色有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848156/