我目前正试图围绕Symfony安全性,特别是ACL。我一直在阅读各种文档和ACL角色&权限似乎很重要。
然而,我不明白这些角色在哪里?权限已定义。例如。文档中有一小部分关于角色[1],但在这个例子中,ROLE_USER
来自何处?此外,角色如何封装权限,例如,在Symfony应用程序中,角色和角色之间的这种关系。权限定义?
答案 0 :(得分:5)
此处定义了内置特殊角色(IS_AUTHENTICATED_FULLY
,IS_AUTHENTICATED_REMEMBERED
,IS_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(例如Acl
,Class
,ClassField
)。
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_SILVER
和EDIT
此VIEW
。但Domain
仅允许ROLE_BRONZE
。
在VIEW
中,您可以查看权限。有关详细信息,请参阅此example。
<强>更新#2:强> 要授予某些权限,请使用MaskBuilder。