我是symfony2的新手,我对这些术语和用例感到困惑。 谁能解释一下有什么区别
答案 0 :(得分:38)
让我们来看一个最基本的例子:博客应用程序(再次)。
构建博客应用程序时,通常需要对用户进行身份验证并授权他们执行特定操作,例如:
角色代表一组权限,在您的应用程序中进行了硬编码。 在检查是否允许用户向博客添加新的贡献者时,您的代码会检查当前用户是否具有角色" ROLE_ADMIN"。
这就是为什么Bob(他有ROLE_ADMIN)被允许添加Alice作为新的贡献者。 请参阅Symfony documentation on Security/Roles。
当用户属于某个群组时,她通常拥有一组角色。 Alice属于小组" Contributors",因此她拥有角色ROLE_STATS(她允许查看博客统计信息)和ROLE_POST(她允许发布新博客条目)。
同样,这个概念在Symfony中没有硬编码,但开发人员通常会这样认为。 请参阅some bit on managing Roles in a database with Groups。
当您需要根据对角色+域对象进行授权决策时,访问控制列表会派上用场。
允许Alice编辑她编写的博客条目。要检查此授权,您需要Alice的角色以及她尝试编辑的帖子模型。 Symfony's documentation on ACLs对此也很清楚。
哦,Bob可以编辑所有博客条目,因为他有ROLE_ADMIN。这里的决定仅基于角色。