symfony access_control无法正常工作

The*_*Tom 1 routes access-control symfony

我的acces_control insisde security.yml不起作用.我已经清除缓存没有任何结果:)

当我阅读文档时,我发现任何错误......非常,只有ROLE_ADMIN才能访问路径/ user /.角色是正确的,我测试了它

{% if is_granted('ROLE_ADMIN') %}   
Run Code Online (Sandbox Code Playgroud)

在Twig里面.

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

role_hierarchy:
    ROLE_CUSTOMER_REVISION: ROLE_USER
    ROLE_CUSTOMER_MANAGER:  [ROLE_CUSTOMER_REVISION, ROLE_IOS]
    ROLE_CUSTOMER_ADMIN:    ROLE_CUSTOMER_MANAGER
    ROLE_ADMIN:             [ROLE_CUSTOMER_ADMIN]

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: ROLE_USER }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/user/, role: ROLE_ADMIN }

providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    dev:
         pattern:  ^/(_(profiler|wdt)|css|images|js)/
         security: false
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            default_target_path: /{locale}/
        logout:       true
        anonymous:    true
Run Code Online (Sandbox Code Playgroud)

我做错了什么,我没看到?

Alt*_*PHP 8

您必须将acces_control子句从最具体到最一般的排序:

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/user/, role: ROLE_ADMIN }
    - { path: ^/, role: ROLE_USER }
Run Code Online (Sandbox Code Playgroud)

这是因为路径/admin也与^/模式匹配,因此^/admin/必须先放置限制模式.