Управление доступом FOSUserBundle для административного раздела позволяет анонимным пользователям

Я пытаюсь сделать раздел администратора доступным только для пользователей-администраторов, использующих FOSUserBundle.

Однако, если я перехожу к URL-адресу администратора (www.foo.local/app_dev.php/admin) без аутентификации, он разрешает мне доступ.

На панели инструментов отладки Symfony отображается Logged in as anon.

Я настроил FOSUserBundle в соответствии с официальной документацией.

Вот конфиг 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: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

Я не знаю, почему он не запрашивает ROLE_ADMIN, чтобы разрешить доступ к разделу администратора, есть идеи?


person rfc1484    schedule 02.12.2014    source источник


Ответы (1)


Я думаю, это потому, что ваше правило говорит

- { path: ^/admin/, role: ROLE_ADMIN }

что значит

www.foo.local/app_dev.php/admin/one
www.foo.local/app_dev.php/admin/two

Обратите внимание на "/" после admin

куда

www.foo.local/app_dev.php/admin

не будет удовлетворять правилу, потому что в конце отсутствует '/'

попробуй изменить правило

- { path: ^/admin, role: ROLE_ADMIN }
person trrrrrrm    schedule 02.12.2014