我正在使用带有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。
我收到此错误的原因是什么?
答案 0 :(得分:2)
main
防火墙似乎有错误的模式。
设置pattern: ^/login
使此防火墙仅对匹配仅/login
网址的网址有效。
此外,注销URL必须位于防火墙的安全区域内。
答案 1 :(得分:1)
您必须添加 security.yml
firewalls:
secured_area:
logout:
path: /logout
target: /
和您的routing.yml
logout:
path: /logout