由于类,我创建了一种使用API密钥对用户进行身份验证的方法
A
实施
SimplePreAuthenticatorInterface
界面一切正常(用户已成功通过身份验证)。
我正在尝试存储API密钥,以便在用户的旅程中稍后使用。为此,在类的authenticate方法中
A.
,我返回a
PreAuthenticatedToken
其中凭据是我的API密钥。
问题是:在自定义服务中,当我尝试获取令牌凭据时
null
... 在注释
预认证Token
Symfony核心等级:
public function eraseCredentials()
{
parent::eraseCredentials();
//$this->credentials = null;
}
我的问题是:
1) 为什么是这种方法
eraseCredentials
调用,而用户经过身份验证?我以为这个方法是在用户注销时调用的。。。
2) 我做错了什么?是
预认证Token
标记存储API密钥的正确位置?如何从定制服务中取回它们?
谢谢你帮助我。:)
附言:我是Stackoverflow(和英文^^^)的新手。对于任何错误,请提前道歉。
我发现
another similar question
但这并没有什么帮助,我补充了一些更精确的说法。
编辑
:我尝试获取凭据的自定义服务的代码为:
$token = $this->container->get("security.token_storage")->getToken();
if ($token !== null) {
$credentials = $token->getCredentials();
// $credentials is null here
}
编辑2
:my的my代码中的返回部分
SimplePreAuthenticatorInterface::authenticateToken
方法:
return new PreAuthenticatedToken(
$user,
$apiKeys,
$providerKey,
$user->getRoles()
);