2025-06-16 17:24:23 +08:00

32 lines
1.4 KiB
C#

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<AbpHttpClientBuilderOptions>(e =>
{
e.ProxyClientActions.Add(ProxyClientBuild);
});
}
public void ProxyClientBuild(string remoteServiceName, IServiceProvider serviceProvider, HttpClient httpClient)
{
var httpContext = serviceProvider.GetService<IHttpContextAccessor>().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<>));
}
}
}