gpt4 book ai didi

c# - 配置 HttpClient 以使用服务来填充身份验证 header ?

转载 作者:行者123 更新时间:2023-12-02 02:34:54 27 4
gpt4 key购买 nike

我想使用 typed HTTP client所以我在 ServiceCollection

中这样注册它
services.AddHttpClient<ApiService>();

客户端发出的所有请求都必须经过身份验证。所以我需要稍微修改上面的代码片段:

services.AddHttpClient<ApiService>(c =>
{
c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "");
});

不记名 token 需要每 5 分钟更新一次,因此我需要创建需要依赖项的服务,例如 HttpClient(用于验证和获取 token )和 MemoryCache(用于存储有效 token )。

问题是,如您所见,这仍处于构建服务提供者之前的阶段,所以此时我无法解决任何问题......我的选择是什么?

最佳答案

您可以像这样访问 ServiceProvider:

services.AddHttpClient<ApiService>(provider, c) =>
{
var token = provider.GetRequiredService<MyTokenService>().GetToken();
c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
});

如果您没有访问提供者的重载,您将需要更新您的依赖项。AddHttpClient 将注册一个 transient 客户端,因此 func(“工厂方法”)将在您每次将其注入(inject)某处时运行。

关于c# - 配置 HttpClient 以使用服务来填充身份验证 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64461823/

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