我正在尝试注销我的用户,获取它的令牌(已存在且正在工作),如下所示:
public function logout(Request $request, TokenStorageInterface $tokenStorage)
{
$em = $this->get('doctrine.orm.entity_manager');
$user = $this->getUser();
$user->setConnected(false);
$em->remove($tokenStorage->getToken()); // Error is here
$em->persist($user);
$em->flush();
}
当我请求此方法时,我收到以下错误:
在链配置的命名空间App \ Entity中找不到“Symfony \ Component \ Security \ Core \ Authentication \ Token \ PreAuthenticatedToken”类
我试图搜索谷歌和SO但没有找到任何相关的线程,因为这个类不是一个实体。
我试图在我的控制器上包含一个“使用”语句,但这并不能解决问题。
我究竟做错了什么 ?
感谢任何愿意花时间阅读或回答此问题的人。
错误在于您正在使用doctrine的实体管理器对令牌存储(我认为是会话cookie)执行某些操作,当然这不是一个学说会知道任何事情的实体。只需删除你的行
$em->remove($tokenStorage->getToken()); // <--- REMOVE
而是这样做:
$tokenStorage->setToken(null);