identityserver4 - 如何在键入的 HttpClient 中获取访问令牌
问题描述
我的服务器端 Blazor 应用程序中有一个 IdentityServer4/WebAPI 设置和一个键入的 HttpClient。我想在向 API 发出请求时动态添加访问令牌。但无论HttpContext
是AuthenticationStateProvider
在AddHttpClient
方法中还是在AddHttpMessageHandler
.
这在本地工作,但在服务器上运行httpContextAccessor
为空:
services.AddHttpClient<IMyClient, MyClient>((serviceProvider, client) =>
{
var httpContextAccessor = serviceProvider.GetService<IHttpContextAccessor>();
var accessToken = await httpContextAccessor.HttpContext.GetTokenAsync("access_token");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
}).AddHttpMessageHandler<MyApiBearerTokenHandler>();
试图访问AuthenticationStateProvider
services.AddHttpClient<IMyClient, MyClient>((serviceProvider, client) =>
{
var authStateProvider = serviceProvider.GetService<AuthenticationStateProvider>();
}).AddHttpMessageHandler<MyApiBearerTokenHandler>();
引发以下错误:
'无法从根提供程序解析范围服务'Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider'。'
如何获取访问令牌AddHttpClient
?我完全走错了吗?
解决方案
推荐阅读
- angular - 无法使用 Angular 7 创建生产版本
- mule-studio - 如何在 MuleSoft AnyPoint Studio v7 中获取 XML 到 JSON 转换器?
- laravel - 为什么 Laravel eloquent 返回空
- javascript - Megakit 主题问题
- stm32 - STM32有CAN总线库直接连接CAN收发器吗?
- python - 如何在 Python 中使用 boto3 检查 S3 上传的状态
- javascript - KnockoutJS 使用 css 属性添加静态和动态类名
- java - 如何从 Hibernate 会话中删除不需要的实体?
- php - 设置参数时找不到路由
- entity-relationship - 学校系统的ER模型