无法使用 Symfony 4 注销

Cod*_*er1 5 symfony symfony4

我无法注销用户。

我将自定义用户管理逻辑移植到 Symfony 4 项目中。它使用security和的食谱guard

这是logout我的主防火墙中的配置:

    logout:
        path: /logout
        target: /
Run Code Online (Sandbox Code Playgroud)

结果: - 用户转到 /logout - 用户被重定向到 / -is_granted("IS_AUTHENTICATED_REMEMBERED")继续true在我的模板中返回(false预期)

其他注意事项: - 防火墙条目被触发,因为如果我删除它会出现错误 - 我已经尝试添加额外的参数logout来销毁会话和 cookie,但这没有区别 - 登录工作正常

关于如何解决这个问题的任何想法?

:: 编辑 -security.yaml按要求添加::

security:
    encoders:
        App\Entity\User: bcrypt
    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN
    providers:
        app_users:
            entity: { class: App\Entity\User, property: email }
        app_oauth:
            id: app.oauth_user_provider
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            provider: app_users
            anonymous: ~
            oauth:
                resource_owners:
                    google: "/login/check-google"
                default_target_path: /
                login_path: /
                failure_path: /login
                oauth_user_provider:
                    service: app.oauth_user_provider
            remember_me:
                secret: "%env(APP_SECRET)%"
                lifetime: 2592000
                path:  /
            guard:
                authenticators:
                    - App\Security\LoginFormAuthenticator
                entry_point: App\Security\LoginFormAuthenticator
            logout:
                path: /logout
                target: /
            switch_user: ~
Run Code Online (Sandbox Code Playgroud)

viv*_*eka 6

添加这些命令

在 security.yaml 中

logout:
                path:   /logout
                target: /
                invalidate_session: true
Run Code Online (Sandbox Code Playgroud)

在控制器中

    /**
     * @Route("/logout", name="logout")
     */
    public function logout()
    {

    }
Run Code Online (Sandbox Code Playgroud)

在注销按钮

<a class="text-muted" href="{{ path('logout') }}">logout </a>
Run Code Online (Sandbox Code Playgroud)


小智 1

检查中字段的serializeunserialize方法。$this->emailApp\Entity\User