我想强制用户在检查到它没有足够的功能访问特定安全区域后在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
我该怎么办呢?
谢谢
答案 0 :(得分:20)
您可以通过setToken()
致电null
强行注销,尝试以下方式:
$this->container->get('security.context')->setToken(null);
它将从安全上下文中销毁用户令牌并踢出用户。
另外,请参阅此问题了解详情:Symfony2: how to log user out manually in controller?