symfony2访问控制限制ROLE_SUPER_ADMIN

时间:2016-10-24 19:33:46

标签: php symfony access-control symfony-security

除了(ROLE_CUSTOM)

之外,我想限制所有角色访问某些路由(包括SUPER_ADMIN,ADMIN)

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

唯一可以访问此路线的角色是(ROLE_CUSTOM)

我想从security.access_control.yml或防火墙配置中控制它。

我知道我可以使用is_granted函数,但我想从security.access_control.yml或防火墙配置控制它。

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:2)

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

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

要允许您保护ROLE_CUSTOM用户的网址格式,只需执行以下操作(Reference):

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

就绪!只有ROLE_CUSTOM的用户才能访问/exclusive-path个路径。