Symfony安全角色

时间:2013-10-18 00:39:20

标签: symfony acl

我目前正试图围绕Symfony安全性,特别是ACL。我一直在阅读各种文档和ACL角色&权限似乎很重要。

然而,我不明白这些角色在哪里?权限已定义。例如。文档中有一小部分关于角色[1],但在这个例子中,ROLE_USER来自何处?此外,角色如何封装权限,例如,在Symfony应用程序中,角色和角色之间的这种关系。权限定义?

[1] http://symfony.com/doc/master/book/security.html#roles

1 个答案:

答案 0 :(得分:5)

此处定义了内置特殊角色(IS_AUTHENTICATED_FULLYIS_AUTHENTICATED_REMEMBEREDIS_AUTHENTICATED_ANONYMOUSLY):AuthenticatedVoter

您应该以{{1​​}}的形式在层次结构中定义所有其他角色。例如:

app/config/security.yml

希望它对你有所帮助。

<强>更新#1: 它是用security: acl: connection: default # ... role_hierarchy: ROLE_SILVER: [ROLE_BRONZE] ROLE_GOLD: [ROLE_SILVER] ROLE_PLATINUM: [ROLE_GOLD] ROLE_ADMIN: [ROLE_PLATINUM, ROLE_ALLOWED_TO_SWITCH] 实现的。您可以根据需要创建许多acl(例如AclClassClassField)。 Object的每个Acl都有一个或多个Domain,如:

Entries

因此,根据Entry#1: User with 'ROLE_BRONZE' allow to 'VIEW' this `Domain` Entry#2: User with 'ROLE_SILVER' allow to 'EDIT' this `Domain` role_hierarchy允许ROLE_SILVEREDITVIEW。但Domain仅允许ROLE_BRONZE

VIEW中,您可以查看权限。有关详细信息,请参阅此example

<强>更新#2: 要授予某些权限,请使用MaskBuilder