我目前正试图围绕Symfony安全性,尤其是ACL。我一直在阅读各种文档,对于ACL角色0权限似乎很重要。Symfony安全角色
但是,我不明白这些角色&权限是在哪里定义的。例如。该文档有一小部分角色[1],但在本示例中,ROLE_USER
来自哪里?此外,角色如何封装权限,如在Symfony应用程序中角色&之间的这种关系定义的权限?
[1] http://symfony.com/doc/master/book/security.html#roles
我目前正试图围绕Symfony安全性,尤其是ACL。我一直在阅读各种文档,对于ACL角色0权限似乎很重要。Symfony安全角色
但是,我不明白这些角色&权限是在哪里定义的。例如。该文档有一小部分角色[1],但在本示例中,ROLE_USER
来自哪里?此外,角色如何封装权限,如在Symfony应用程序中角色&之间的这种关系定义的权限?
[1] http://symfony.com/doc/master/book/security.html#roles
内置特殊角色(IS_AUTHENTICATED_FULLY
,IS_AUTHENTICATED_REMEMBERED
,IS_AUTHENTICATED_ANONYMOUSLY
)这里定义:AuthenticatedVoter。
您应该以层次结构的形式在app/config/security.yml
中定义所有其他角色。例如:
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]
希望它可以帮助你。
更新#1: 它与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
。
在您的Controller
中,您可以检查权限。详情请参阅example。
UPDATE#2: 要授予某些权限,请使用MaskBuilder。
谢谢。但是,我仍然不明白角色如何与权限相关联。例如。你声明ROLE_BRONZE,就像在哪里声明ROLE_BRONZE的人实际上有能力做什么? – Luke
请参阅**更新#1 ** – sergekv