我对 Symfony 3 中的令牌有一个奇怪的问题。
我将其注入security.token_storage
到我的 Twig 扩展中
app.twig_extension:
class: AppBundle\Twig\Extension\TwigExtension
arguments: ['@security.token_storage']
tags:
- { name: twig.extension }
现在,在构造函数中,我想从令牌中获取用户。
public function __construct(TokenStorage $tokenStorage)
{
/** @var User user */
$token = $tokenStorage->getToken();
//$user = $token->getUser();
//dump($user);
//$this->user = $tokenStorage->getToken()->getUser();
}
这就是问题所在。如果我转储$token
,一切似乎都很正常。这是令牌的转储:
PostAuthenticationGuardToken {#637 ▼
-providerKey: "main"
-user: User {#396 ▶}
-roles: array:1 [▶]
-authenticated: true
-attributes: []
}
但是如果我正在使用$token->getUser();
我会收到一个错误,我正在getUser
调用null
(1/1) FatalThrowableError
在 null 上调用成员函数 getUser()
此错误将显示在 Symfony 分析器中。现在,如果我$token->getUser();
从代码中删除该部分,然后重新加载分析器,则会显示用户。
我无法解释这种行为,也无法解释为什么会引发有关null变量的错误。有人可以向我解释一下吗?
我已经尝试将整个容器注入服务器并尝试让用户通过容器,但结果是一样的。