symfony2访问控制限制ROLE_SUPER_ADMIN


symfony2 access control restrict ROLE_SUPER_ADMIN

我想限制一些路由被所有角色(SUPER_ADMIN,包括ADMIN)访问,除了(ROLE_CUSTOM)

其中ROLE_CUSTOM是为指定路由创建的自定义角色。

唯一可以访问该路由的角色是(ROLE_CUSTOM)

我想通过security.access_control来控制这个。

我知道我可以使用is_grant函数,但我想从security.access_control控制它。

我怎样才能做到这一点?

角色很简单,基本上是您根据需要创建和使用的字符串,因此ROLE_SUPER_ADMINROLE_ADMIN已经是您创建的自定义角色。然后一切都取决于你的角色层次(参考):

security:   
    role_hierarchy:
        ROLE_CUSTOM:      ROLE_USER
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

允许你保护URL模式的用户与ROLE_CUSTOM只是做以下(参考):

security:
    access_control:
        - { path: ^/exclusive-path$, role: ROLE_CUSTOM }

准备好了!只有ROLE_CUSTOM用户才能访问/exclusive-path路径