如何解决OAuth2 Symfony Api 邮递员没有通过守卫身份验证器
我正在使用 Symfony 构建 API,并且我添加了 OAuth 身份验证以保护 API。 但是当我使用 Postman 测试 API 并尝试获取新的访问令牌时,Postman 不会通过防护验证器获取令牌并且不返回令牌并且用户未连接。
但是当我使用前端进行测试时,我访问要连接的这条路由(localhost:8000/api/connect/github),然后这条路由获取令牌(localhost:8000/api/access_token/github)用户已连接,我可以在此处看到令牌,但在邮递员上看不到。
这是我用来将用户与 OAuth(在我的 SecurityController 中)连接的两条路线:
/**
* @Route("/connect/{service}",name="api_connect")
*/
public function connect(string $service): RedirectResponse
{
/** @var GithubClient $client */
$client = $this->clientRegistry->getClient($service);
return $client->redirect(['read:user','user:email']);
}
/**
* @Route("/access_token/{service}",name="api_access_token")
*/
public function accesstoken(Request $request,string $service): JsonResponse
{
try {
return new JsonResponse(["Access Token" => $request->getSession()->get("Access Token")],200);
} catch (IdentityProviderException $e) {
return new JsonResponse(["Error" => [
"Message" => $e->getMessage(),"Code" => $e->getCode()
]
]);
}
}
在我的身份验证器中,我使用了这两种方法来获取令牌并将其通过会话和标头传递:
public function getCredentials(Request $request)
{
$accesstoken = $this->fetchAccesstoken($this->getClient());
$request->headers->set("Access Token",$accesstoken);
return $accesstoken;
}
public function onAuthenticationSuccess(Request $request,TokenInterface $token,string $providerKey)
{
$request->getSession()->set("Access Token",$request->headers->get("Access Token"));
return null;
}
因此,在我的 SecurityController 的 accesstoken 方法中,我尝试在请求标头中获取令牌。它应该给我这样的东西:
{ "Access Token": "gho_6YGwaGYfInYUPAvcbUhTzkq2VdplIO3GC0MN" }
但在 Postman 中,它返回给我:
{ "Access Token": null }
所以我猜邮递员没有通过身份验证器,但我不明白为什么,你们有什么解释吗?
非常感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。