From dcf43da6ca36a4476139305174a6bd6dd48630d0 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 05 九月 2025 14:34:22 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs | 55 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 46 insertions(+), 9 deletions(-) diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs index 936b8b2..08a3ec5 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs @@ -1,9 +1,13 @@ 锘縰sing Furion; +using Furion.DatabaseAccessor; +using Furion.DataEncryption; using Furion.HttpRemote; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http.Headers; +using System.Security.Claims; using System.Text; using System.Threading.Tasks; @@ -16,21 +20,54 @@ { public async Task<string> SendAsStringAsync(HttpRequestBuilder builder) { - var token = App.HttpContext.Request.Headers["Authorization"].ToString(); - if (token.IsNotNull()) + var httpRemoteService = App.GetRequiredService<IHttpRemoteService>(); + builder = WithHeader(builder, "Authorization"); + builder = WithHeader(builder, "X-Authorization"); + var response = await httpRemoteService.SendAsStringAsync(builder); + try { - builder = builder.WithHeader("Authorization", token); - //builder = builder.AddAuthentication(new AuthenticationHeaderValue("Authorization", token)); + var result = response.JsonTo(new + { + Code = 0 + }); + if (result.Code == 401) + { + var accessToken = GetHeaderValue(builder, "Authorization"); + var logier = await accessToken.GetCurrentLogier(); + if (logier != null) + { + builder = WithHeader(builder, "Authorization", $"Bearer {logier.AccessToken}"); + builder = WithHeader(builder, "X-Authorization", $"Bearer {logier.RefreshToken}"); + response = await httpRemoteService.SendAsStringAsync(builder); + } + } } + catch { } + return response; + } - var refreshToken = App.HttpContext.Request.Headers["X-Authorization"].ToString(); - if (refreshToken.IsNotNull()) + public string GetHeaderValue(HttpRequestBuilder builder, string name) + { + string value = null; + if (builder.Headers?.ContainsKey(name) ?? false) { - builder = builder.WithHeader("X-Authorization", refreshToken); - //builder = builder.AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken)); + value = builder.Headers[name].FirstOrDefault(); } + else if (App.HttpContext.Request.Headers.ContainsKey(name)) + { + value = App.HttpContext.Request.Headers[name].ToString(); + } + return value; + } - return await App.GetRequiredService<IHttpRemoteService>().SendAsStringAsync(builder); + private HttpRequestBuilder WithHeader(HttpRequestBuilder builder, string name, string value = null) + { + value ??= GetHeaderValue(builder, name); + if (value.IsNotNull()) + { + builder = builder.WithHeader(name, value, replace: true); + } + return builder; } } } -- Gitblit v1.9.1