using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Http.Client; using Volo.Abp.Http.Client.DynamicProxying; using Volo.Abp.Modularity; namespace Syc.Abp.HttpApi.Client { public class HttpApiClientModule: AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure(e => { e.ProxyClientActions.Add(ProxyClientBuild); }); } public void ProxyClientBuild(string remoteServiceName, IServiceProvider serviceProvider, HttpClient httpClient) { var httpContext = serviceProvider.GetService().HttpContext; var token = httpContext.Request.Headers.Authorization.FirstOrDefault()?.Replace($"{JwtBearerDefaults.AuthenticationScheme} ", string.Empty); httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme, token); } public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddTransient(typeof(DynamicHttpProxyInterceptorClientProxy<>), typeof(AppDynamicHttpProxyInterceptorClientProxy<>)); } } }