我有一个TokenAuthenticator
来实现SimplePreAuthenticatorInterface
,AuthenticationSuccessHandlerInterface
和AuthenticationFailureHandlerInterface
。它会创建一个PreAuthenticatedToken
令牌。
在该类中,我有一个名为authenticateToken
的方法,看起来像这样。
/**
* @param TokenInterface $token
* @param UserProviderInterface $userProvider
* @param $providerKey
*
* @return PreAuthenticatedToken
*/
public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey)
{
$token = $token->getCredentials();
代码有效,但最近有几次getCredentials
返回null
导致代码崩溃。
我正在尝试确定这是为什么并且考虑过用户使用私人浏览器会话和/或清除他们的会话cookie /缓存等,但我似乎无法复制这一点。
考虑authenticateToken
方法类型 - 将$token
变量提示为TokenInterface
- 什么会导致调用getCredentials
然后返回null
?< / p>
答案 0 :(得分:-1)
您是否要求对所有路线进行所有身份验证?
如果您允许匿名用户getCredentials
将返回''
,您可以在此类代码段中看到
/**
* {@inheritdoc}
*/
public function getCredentials()
{
return '';
}
返回此值的另一个默认令牌类是RememberMeToken
。