如何在Symfony2中使用FOSUserBundle正确注销

时间:2016-04-03 00:30:56

标签: symfony fosuserbundle logout

有人可以告诉我我必须做的步骤,以便我可以从我的后台退出 我正在使用symfony2和fosuser捆绑包 这是我的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: ^/
        form_login:
            provider: fos_userbundle
            csrf_token_generator: security.csrf.token_manager
            default_target_path: /admin
            # if you are using Symfony < 2.8, use the following config instead:
            # 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 }

我试图添加

logout:
        path:   /logout
        target: /login

logout:
            path:   /logout
            target: /
        anonymous:    true

但没有工作 该怎么办 ?

2 个答案:

答案 0 :(得分:5)

注销功能内置于FOSU​​serBundle中。

您可以查看此次购买

php app/console route:debug | grep logout

它应该显示

Name                              Method   Scheme Host Path 
fos_user_security_logout          GET      ANY    ANY  /logout 

如果您希望覆盖FOSUserBundle的路线,这个答案非常有帮助:https://stackoverflow.com/a/19608870/5760411

或文档:http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html

答案 1 :(得分:1)

您忘记添加路线定义。

在routing.yml:

logout:
    path: /logout