如何强制用户注销 symfony2
Posted
技术标签:
【中文标题】如何强制用户注销 symfony2【英文标题】:How to force user logout 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
请问我该怎么做?
谢谢
【问题讨论】:
Symfony2: how to log user out manually in controller? 的可能重复项 【参考方案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。以上是关于如何强制用户注销 symfony2的主要内容,如果未能解决你的问题,请参考以下文章