1

我目前正在尝试围绕 Symfony 安全性,尤其是 ACL。我一直在阅读各种文档,并且 ACL 角色和权限似乎很重要。

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

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

4

1 回答 1

5

内置的特殊角色 ( 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]

希望它可以帮助你。

UPDATE#1: 它是用Acl. 您可以根据需要创建许多 acl(例如ClassClassFieldObject)。每个AclforDomain都有一个或多个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_SILVERallow toEDITVIEWthis Domain。但ROLE_BRONZE只允许VIEW

在你的Controller你可以检查权限。详细见这个例子

UPDATE#2: 要授予某些权限,请使用MaskBuilder

于 2013-10-18T06:13:36.063 回答