如何强制用户注销symfony2

问题描述 投票:5回答:1

我想在检查它没有足够的功能访问特定的安全区域后强制用户在symfony2中注销。

我尝试过:

$this->get('request')->getSession()->invalidate();

但似乎出现了问题,用户仍然登录,直到我使用/ logout路由将其注销。

我要提一下,我正在使用KayueWordpressBundle将我的symfony应用程序与基于wordpress的网站连接起来,以创建一个自定义的后台办公室。

这是我的security.yml文件

security:
firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
    login_firewall:
        pattern:    ^/$
        anonymous:  ~
    secured_area:
        pattern:    ^/
        kayue_wordpress: ~
        form_login:
            check_path: /login_check
            login_path: /
        logout:
            path:   /logout
            target: /
access_control:
    - { path: ^/admin, roles: ROLE_ADMIN }

providers:
    wordpress:
        entity: { class: Kayue\WordpressBundle\Entity\User, property: username }

encoders:
    Kayue\WordpressBundle\Entity\User:
        id: kayue_wordpress.security.encoder.phpass

我该怎么办?

谢谢

php wordpress security symfony logout
1个回答
20
投票

您可以通过setToken()调用null强制注销,尝试这样的事情:

$this->container->get('security.context')->setToken(null);

它将从安全上下文中销毁用户令牌并踢出用户。


另外,请查看此问题以获取更多详细信息:Symfony2: how to log user out manually in controller?

© www.soinside.com 2019 - 2024. All rights reserved.