symfony2 访问控制限制 ROLE_SUPER_ADMIN

symfony2 access control restrict ROLE_SUPER_ADMIN

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

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

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

我想通过 security.access_control.yml 或防火墙配置来控制它。

我知道我可以使用 is_granted 功能,但我想通过 security.access_control.yml 或防火墙配置来控制它。

我怎样才能做到这一点?

角色很简单,基本上是您根据需要发明和使用的字符串,因此 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 用户的 URL 模式,只需执行以下操作 (Reference):

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

准备好了!只有 ROLE_CUSTOM 的用户可以访问 /exclusive-path 路径。