0

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。何かアイデアはありますか?

4

1 に答える 1

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 }
于 2014-12-02T17:52:29.770 に答える