代码之家  ›  专栏  ›  技术社区  ›  freddoo

为什么不在blazor webassembly中发送承载令牌?

  •  0
  • freddoo  · 技术社区  · 5 年前

    我正在尝试配置我的http客户端以发送jwt令牌

    使用此代码

    public class HttpClientWithToken
        {
            public HttpClientWithToken(HttpClient httpClient)
            {
                HttpClient = httpClient;
            }
    
            public HttpClient HttpClient { get; }
        }
    
    public static async Task Main(string[] args)
                {
                    var builder = WebAssemblyHostBuilder.CreateDefault(args);
                    builder.RootComponents.Add<App>("#app");
        
                    builder.Services.AddHttpClient<HttpClientWithToken>(
                         client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
                         .AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
        
                    ConfigureServices(builder.Services);
        
                    var host = builder.Build();
    
                    await host.RunAsync();
                }
    

    我得到错误:“没有注册类型为“microsoft.aspnetcore.components.webassembly.authentication.baseaddressauthorizationmessagehandler”的服务”

    使用此代码

    public static async Task Main(string[] args)
            {
                var builder = WebAssemblyHostBuilder.CreateDefault(args);
                builder.RootComponents.Add<App>("#app");
    
                builder.Services.AddSingleton<BaseAddressAuthorizationMessageHandler>();
    
                builder.Services.AddHttpClient<HttpClientWithToken>(
                     client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
                     .AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
    
                ConfigureServices(builder.Services);
    
                var host = builder.Build();
    
                await host.RunAsync();
            }
    

    我收到错误:“在尝试激活“Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider”时,无法解析类型为“Microsoft.Asp NetCore.Components.WebAssembly.Authentication.BaseAddressAuthorizationMessageHandler”的服务。”

    我错过了什么? 基于我下面的示例,第一个代码应该在头中发送承载。

    我可以调用我的api,并在设置HttpClient时获得承载令牌。DefaultRequestHeaders。授权,但我无法使用配置获取令牌。

    0 回复  |  直到 5 年前