我有一个奇怪的问题,在Symfony的令牌用户3令牌当试图访问
我注入security.token_storage
到我的一个枝杈伸展现在
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();
我会收到我的空
(1/1)FatalThrowableError
调用getUser
错误调用成员函数getUser()null
这个错误将会是显示在Symfony分析器中。现在,如果我从代码中删除零件$token->getUser();
,然后重新加载分析器,将显示用户。
我不能解释这种行为,也不能解释为什么会抛出有关变量的错误。有人可以向我解释这个吗?
我已经尝试将整个容器注入服务器,并试图让用户通过容器,但结果是相同的。
我的服务我,没有容器。无论如何不建议注入容器。您发布的代码与我的代码相同,唯一的区别是您要检查容器,并且必须具有容器。 – KhorneHoly
然后可能'PostAuthenticationGuardToken-> getUser();' – Arcv
对不起,但我认为你并没有真正理解我所问的问题。变量'$ token'是类** PostAuthenticationGuardToken **的对象,这就是为什么** PostAuthenticationGuardToken **显示在我发布在我的问题中的变量'$ token'的转储中。 – KhorneHoly