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

问题描述 投票:4回答:2

有人可以告诉我我必须做什么步骤,以便我可以从我的后台登出我正在使用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

但不工作怎么办?

symfony fosuserbundle logout
2个回答
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
投票

你忘了添加路由定义。

在routing.yml中:

logout:
    path: /logout
© www.soinside.com 2019 - 2024. All rights reserved.