Symfony安全角色

Luk*_*uke 1 acl symfony

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

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

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

Ser*_*nin 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]
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你.

更新#1: 它是用Acl.实现的.您可以创建许多ACL对你所需要的(例如Class,ClassField,Object).每AclDomain都有一个或多个Entries这样的:

Entry#1: User with 'ROLE_BRONZE' allow to 'VIEW' this `Domain`
Entry#2: User with 'ROLE_SILVER' allow to 'EDIT' this `Domain`
Run Code Online (Sandbox Code Playgroud)

等等

所以根据role_hierarchy ROLE_SILVER允许EDITVIEW这个Domain.但ROLE_BRONZE只允许VIEW.

在你的,Controller你可以检查权限.详细信息请参见此示例.

更新#2: 要授予一些权限,请使用MaskBuilder.