Symfony 如何为管理员分配额外的角色

Symfony 如何为管理员分配额外的角色,symfony,Symfony,在我的网站上,我的管理员有很多角色。 我想限制某些管理员对某个部分的访问,因此我要求在进入之前授予特定的角色。管理员需要分配“角色报告”角色才能访问/REPORT页面 这是我的密码: security: role_hierarchy: ROLE_REPORT : ROLE_USER ROLE_MERCHANT: ROLE_USER ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT ROLE_ON

在我的网站上,我的管理员有很多角色。 我想限制某些管理员对某个部分的访问,因此我要求在进入之前授予特定的角色。管理员需要分配“角色报告”角色才能访问/REPORT页面

这是我的密码:

security:
    role_hierarchy:
        ROLE_REPORT : ROLE_USER
        ROLE_MERCHANT:    ROLE_USER
        ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT
        ROLE_ONLINE_CHECKOUT: ROLE_MERCHANT
        ROLE_ADMIN:       [ROLE_MERCHANT, ROLE_VIRTUAL_TERMINAL, ROLE_ONLINE_CHECKOUT]
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    access_control:

        # Section Report
        - { path: /report(.*), roles: ROLE_REPORT}
由于某些原因,我的管理员在授予角色后无法访问该页面。我认为这与角色层次有关

如果我能提供更多信息,请告诉我


谢谢,

默认情况下,您需要注销/再次登录才能使新角色生效

然而,还有另一种选择。根据安全参考,有一个选项
总是在授予之前进行身份验证
,如果设置为
true
,将在每次请求时刷新令牌。Symfony每次都会转到DB刷新角色


通过示例和链接提供了类似的答案

您应该添加一个新角色,例如role_ADMIN_REPORT,并通过以下方式修改您的安全性:

security:
    role_hierarchy:
        ROLE_REPORT : ROLE_USER
        ROLE_MERCHANT:    ROLE_USER
        ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT
        ROLE_ONLINE_CHECKOUT: ROLE_MERCHANT
        ROLE_ADMIN:       [ROLE_MERCHANT, ROLE_VIRTUAL_TERMINAL, ROLE_ONLINE_CHECKOUT]
        ROLE_ADMIN_REPORT: [ROLE_ADMIN, ROLE_REPORT]
        ROLE_SUPER_ADMIN: ROLE_ADMIN

access_control:

    # Section Report
    - { path: /report(.*), roles: ROLE_REPORT}

您是否尝试注销/再次登录?角色不会自动刷新…@jperovic:它可以工作。我觉得发这篇文章很蹩脚。将您的评论作为答案发布,以便我可以接受!