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

标签 php symfony

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

  1. ACL
  2. 角色
  3. 群组

最佳答案

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

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

  • 授权 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/

相关文章:

php - 使用 laravel 生成 csv 文件

caching - 如何使用ESI构建Symfony2应用程序?

php - 监听 Symfony 2 中的所有事件

php - 使用带有特殊字符的变量作为分隔符来分解字符串

php - Sql 连接查询错误。有人请帮助我

PHP 网站转换为静态 HTML 网站 - 链接问题

PHP 安全 - 密码和凭据管理?

symfony - Datatables.net (1.10.22) + Webpack Encore (1.11) + Symfony (5.2.6)

php - FOSRestBundle 在 Symfony 4.1 中不起作用

php - 如何在记住我登录 Symfony2 后获取 session ID?