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<>));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|