在Blazor WebAssembly应用程序中使用HttpClient调用API时,发现授权标头未提供声明信息。解决此问题的一种方法是使用AuthenticationStateProvider获取当前用户的声明,然后将它们添加到HttpClient实例的默认请求标头中。
以下是解决该问题的代码示例:
// 在组件中注入AuthenticationStateProvider
@inject AuthenticationStateProvider AuthStateProvider
@code {
protected override async Task OnInitializedAsync()
{
// 获取当前用户的声明
var authState = await AuthStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
// 将声明添加到HttpClient实例的默认请求标头中
HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", user.FindFirst("access_token").Value);
// 使用HttpClient调用API
var response = await HttpClient.GetAsync("/api/values");
}
}