首页 文章

按角色的Symfony access_control

提问于
浏览
0

我读了这页关于Symfony security的内容!

但是我不能使用access_control . 我有两条路线和仪表板 . 返回仅适用于ROLE_SUPER_ADMIN,并且为了转到仪表板,必须对用户进行身份验证 .

匿名用户可以到任何地方,ROLE_USER可以返回(仅限SUPER ADMIN)

这是我的文件security.yml

security:
encoders:
    FOS\UserBundle\Model\UserInterface: sha512

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        pattern:    ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        logout:       true
        anonymous:    true

access_control:
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/dashboard, roles: ROLE_USER }
    - { path: ^/back, roles: ROLE_ADMIN }

谢谢你的帮助

1 回答

  • 2

    当然匿名用户可以到处走!看看你的第一条规则

    access_control:
        - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    

    即使对于 /back 路径,规则也似乎正常,因为您点击了授予操作的第一个 access_control 规则

    Faster solution :尝试反转您的规则订单

    Better solution :尝试编写更好(不太通用)的规则[如果你的应用允许你这样做]

相关问题