FOSUserBundle - 您必须在安全防火墙配置中激活注销

时间:2016-02-22 11:49:02

标签: symfony security fosuserbundle firewall logout

我正在使用带有FOSUserBundle的Symfony 2.8.2。当我尝试注销时,我收到以下错误:

  

您必须在安全防火墙配置中激活注销

这是我的security.yml

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

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/login
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager
            anonymous: true
            logout:
                path: /logout
                target: /login

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

我也尝试设置 logout:true ,但没有任何改变。

P.S。我没有使用Sonata,只使用FOSUserBundle。

我收到此错误的原因是什么?

2 个答案:

答案 0 :(得分:2)

main防火墙似乎有错误的模式。

设置pattern: ^/login使此防火墙仅对匹配仅/login网址的网址有效。

此外,注销URL必须位于防火墙的安全区域内。

答案 1 :(得分:1)

您必须添加 security.yml

firewalls:
       secured_area:   
              logout:
                  path:   /logout
                  target: /

和您的routing.yml

logout:
    path: /logout