0

我有一个 symfony 2 应用程序,具有普通成员和管理区域,但由于某种原因,我无法让管理区域登录部分工作。阅读此处有关该主题的所有问题并尝试它们,但没有一个对我有用。我认为最初的问题是检查路由不在防火墙后面,因此 symfony 安全无法识别它。

我的安全.yml

security:
encoders:
    FOS\UserBundle\Model\UserInterface: sha512
    Symfony\Component\Security\Core\User\User: sha512

firewalls:
    alogin:
        pattern:  ^/admin/login$
        security: false
    main:
        pattern:    ^/admin
        provider: in_memory
        form_login:
            check_path: /admin/login_check
            login_path: /admin/login
            default_target_path: /admin/list
        logout:
            path:   /admin/logout
            target: /admin
    main:
        pattern:    ^/(?!admin)
        form_login:
            provider: fos_userbundle
            login_path: /
            failure_handler: public.failed_login_handler
            success_handler: public.success_login_handler
        logout:       true
        anonymous:    true


providers:
    fos_userbundle:
        id: fos_user.user_provider.username_email
    in_memory:
        memory:
            users:
                ryan:  { password: ryanpass, roles: 'ROLE_ADMIN' }

role_hierarchy:
    ROLE_VIP:         ROLE_USER
    ROLE_ADMIN:       ROLE_VIP
    ROLE_SUPER_ADMIN: ROLE_ADMIN

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

没有主防火墙,它可以工作,有了它,我得到了 /admin/login_check 的 404。

4

1 回答 1

0

您有 2 个同名防火墙的问题main。防火墙必须具有唯一的名称。

于 2013-08-16T14:59:10.250 回答