【问题标题】:How to force user logout symfony2如何强制用户注销 symfony2
【发布时间】:2013-12-04 09:07:41
【问题描述】:

我想强制用户在检查 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】:

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

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

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


另外,请参阅此问题了解更多详情:Symfony2: how to log user out manually in controller?

【讨论】:

  • 如果我为注销注册了任何处理程序,上述解决方案将不会调用注销处理程序。
  • 顺便说一句,请改用$this->container->get('security.authorization_checker')(2.6 中的新功能)
  • @Ronan,我是$this->container->get('security.token_storage')。见New in Symfony 2.6: Security component improvements
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 2012-05-11
相关资源
最近更新 更多