gpt4 book ai didi

asp.net-core - 使用 IHttpClientFactory.Net Core 使用外部 API 时在何处存储访问和刷新 token

转载 作者:行者123 更新时间:2023-12-05 00:54:13 24 4
gpt4 key购买 nike

我使用 IHttpClientFactory 从我的 Web API 向使用 Net Core 2.2 的外部 API 发送请求和接收 HTTP 响应。

用于向 API 发送请求的访问 token 和刷新 token 已存储在 appsettings.json 中。当请求返回 403 或 401 错误时,我会动态获取一个新 token 并将其添加到请求的 header 中。

但是我如何使用新的访问和刷新 token 更新 appsettings.json 以便将其用于后续请求。

是否有比 appsettings.json 更好的方法来存储访问和刷新 token ?

最佳答案

由于您正在使用 IHttpClinetFactory(假设您也正在使用 Typed Client),您可以创建自己的 HttpMessageHandler这将在您的 Typed Client 发出任何请求之前触发,并通过 DI 将其与您的 typed client 链接,如下所示:

services.AddHttpClient<IServiceContract, ServiceImplementation>()
.AddHttpMessageHandler<TokenHandler>();

TokenHandler 中,您可以检查请求的 header 中是否包含 token 。如果不检查缓存(Memory Cache)中的可用 token ,则验证 token 的生命周期。

如果token过期或者缓存中没有这样的token,则颁发一个新的并存入缓存。

我确信有更好的方法,但我会这样做。


注意:如果您的应用程序分布在多个服务器上,则使用 Distributed Cache而不是 Memory Cache .您可以通过 DI 轻松添加。


更新:

您可以像这样注册您的处理程序:

services.AddTransient<TokenHandler>();

关于asp.net-core - 使用 IHttpClientFactory.Net Core 使用外部 API 时在何处存储访问和刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56208011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com