【发布时间】:2022-08-08 17:48:13
【问题描述】:
如何强制注销用户从新 Symfony 6 的控制中登录? (版本 6.0.1)
I tried $tokenStorage->setToken($token); but setToken() need 2 args:
(public function setToken(string $tokenId, string $token);)
我试过$request->getSession()->invalidate();,但我的用户总是被登录...
我想注销用户并重定向到另一条路线(à不希望重定向到注销路线)
谢谢
-
通常你可以做
$tokenStorage->setToken(null);不确定这对于 Symfony 6 是否已经改变。$id = $tokenStorage->getToken()->getId();怎么样然后你可以...->setToken($id, null); -
Symfony 6 中的 TokenStorageInterface 似乎不需要 2 个参数。
$tokenStorage->setToken(null)对我来说效果很好。 -
我没有方便的 6.0 示例,但基本上您需要调度 LogoutEvent,然后将令牌设置为 null。看一下
Symfony\\Component\\Security\\Http\\Firewall\\LogoutListener::authenticate的源码,基本复制了相关代码。我知道曾经有人谈论将此功能封装到官方注销服务中,但我认为这甚至没有发生。即使没有它,事情似乎也能正常工作,你发送事件也很重要。没有它,您很容易遇到难以调试的问题。