32 lines
1.4 KiB
C#
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<>));
|
|
}
|
|
}
|
|
} |