【问题标题】:symfony2 security rolessymfony2 安全角色
【发布时间】:2012-03-07 20:25:35
【问题描述】:

我想在 security.yml 文件中这样做:

access_control:
    - { path: ^/admin, roles: ROLE_ADMIN }
    - { path: ^/admin, roles: ROLE_EMPLEADO}

这意味着我想让 2 个角色访问相同的 url 模式。

我所做的不起作用,它总是只授予 ROLE_ADMIN 权限,当我使用 ROLE_EMPLEADO 访问相同的 url 时,它显示 Access Denied。

我怎样才能做到这一点?

【问题讨论】:

    标签: security symfony


    【解决方案1】:

    您应该创建一个角色层次结构(参见http://symfony.com/doc/2.0/book/security.html#hierarchical-roles

    security:
      roles_hierarchy:
        ROLE_EMPLEADO: ROLE_ADMIN
    

    这基本上意味着具有角色 ROLE_EMPLEADO 的用户也具有角色 ROLE_ADMIN,然后就足以说明:

    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
    

    【讨论】:

    • 非常感谢您的回答 :),但分层角色不符合我的需求。我需要 empleado 才能成为 empleado。如果我输入 ROLE_EMPLEADO: ROLE_ADMIN,那么 empleado 也将是管理员,我将无法拥有类似的内容:如果您是 empleado 则打印此内容,或者如果您是管理员则打印此内容,因为 empleado 两者兼而有之。跨度>
    【解决方案2】:

    你是怎么做的:

    - { path: "^/admin", role: ["ROLE_ADMIN", "ROLE_EMPLEADO"] }
    

    这将允许两个角色访问相同的 url。

    【讨论】:

    • 谢谢。正是我需要的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2014-10-22
    • 2016-06-20
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    相关资源
    最近更新 更多