1

我正在尝试注销我的用户,得到它的令牌(它是现有的并且正在工作),如下所示:

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”

我试图在 google 和 SO 上搜索,但没有找到任何相关的线程,因为这个类不是实体。

我试图在我的控制器顶部包含一个“使用”语句,但这并没有成功。

我究竟做错了什么 ?

感谢任何愿意花时间阅读或回答此问题的人。

4

1 回答 1

1

错误是您正在使用教义的实体管理器来处理令牌存储(我认为这是一个会话 cookie),而这当然不是教义会知道的实体。只需删除您的线路

$em->remove($tokenStorage->getToken()); // <--- REMOVE

而是这样做:

$tokenStorage->setToken(null);
于 2018-09-08T19:17:45.633 回答