From 04881ef3b8c49b219917fc39e9576517ba1c0002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com> Date: Mon, 20 Apr 2026 14:30:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20401=E9=89=B4=E6=9D=83?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VideoAnalysis/Expand/AuthorizeExpand.cs | 25 +++++++++++-------- VideoAnalysis/Program.cs | 7 +++++- VideoAnalysis/WebUI/src/utils/http/index.ts | 7 +++++- VideoAnalysisCore/Common/Expand/CorsExpand.cs | 4 ++- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/VideoAnalysis/Expand/AuthorizeExpand.cs b/VideoAnalysis/Expand/AuthorizeExpand.cs index c78ab9f..bd683a9 100644 --- a/VideoAnalysis/Expand/AuthorizeExpand.cs +++ b/VideoAnalysis/Expand/AuthorizeExpand.cs @@ -51,24 +51,27 @@ namespace Learn.VideoAnalysis.Expand }, OnAuthenticationFailed = context => { - context.Response.StatusCode = 403; + // 可选:标记一下是否过期 + if (context.Exception!=null) + context.Response.Headers["Token-Expired"] = context.Exception.Message; return Task.CompletedTask; }, OnChallenge = context => { - context.HandleResponse(); - if (context.Response.StatusCode == 403) + if (context.Response.Headers.ContainsKey("Token-Expired")) { - var data1 = new { Code = 403, Message = context.Error + context.AuthenticateFailure?.Message }; - context.Response.WriteAsync(data1.ToJson()); - return Task.CompletedTask; + } - context.Response.Clear(); - context.Response.ContentType = "application/json"; + context.HandleResponse(); context.Response.StatusCode = 401; - var data = new { Code = 401, Message = context.Error + context.AuthenticateFailure?.Message }; - context.Response.WriteAsync(data.ToJson()); - return Task.CompletedTask; + context.Response.ContentType = "application/json"; + context.Response.Headers["Access-Control-Allow-Origin"] = "*"; // ✅ 补这个 + var data = new + { + Code = 401, + Message = context.Error + context.AuthenticateFailure?.Message + }; + return context.Response.WriteAsync(data.ToJson()); } }; }); diff --git a/VideoAnalysis/Program.cs b/VideoAnalysis/Program.cs index 52e96d2..90a47a6 100644 --- a/VideoAnalysis/Program.cs +++ b/VideoAnalysis/Program.cs @@ -53,9 +53,13 @@ namespace Learn.VideoAnalysis builder.AddAppConfig(args); //初始化 插件 builder.Services.AddEndpointsApiExplorer(); + //swagger builder.Services.AddSwaggerExpand("AI视频分析"); + //鉴权 builder.Services.AddPermissionAuthentication(); + //数据库 builder.Services.AddSqlSugarExpand(); + //reids builder.Services.AddRedisExpand(); //工作流 builder.Services.AddSimpleTexOcrClient(); @@ -109,6 +113,8 @@ namespace Learn.VideoAnalysis var app = builder.Build(); AppCommon.Services = app.Services; + //允许跨域 + app.UseCorsExpand(); app.UseMiddleware("Swagger"); // Configure the HTTP request pipeline. app.UseSwagger(); @@ -133,7 +139,6 @@ namespace Learn.VideoAnalysis app.MapControllers(); //自定义 应用 - app.UseCorsExpand(); app.UseSqlSugarExpand(); app.UseCoravelExpand(); app.UseServiceSystem(() => diff --git a/VideoAnalysis/WebUI/src/utils/http/index.ts b/VideoAnalysis/WebUI/src/utils/http/index.ts index 6d6fa5f..dbd74d7 100644 --- a/VideoAnalysis/WebUI/src/utils/http/index.ts +++ b/VideoAnalysis/WebUI/src/utils/http/index.ts @@ -17,6 +17,7 @@ import { useUserStoreHook } from "@/store/modules/user"; import router from "@/router"; import { ElMessage } from "element-plus"; import { message } from "../message"; +import { useNav } from "@/layout/hooks/useNav"; /**请求后端的地址 未配置则访问BaseURL */ const apiServiceConfig = { @@ -203,12 +204,16 @@ class PureHttp { $error.isCancelRequest = Axios.isCancel($error); // 关闭进度条动画 NProgress.done(); + debugger if (error.response?.status === 403) { // 跳转到403页面 router.push({ path: "/error/403" }); - } else if (error.response?.status !== 200) { + }else if (error.response?.status === 401) { + // 跳转到403页面 + useUserStoreHook().logOut(); + }else if (error.response?.status !== 200) { ElMessage.warning("请求失败" + $error.message + " "); console.log("请求失败" ,$error); } diff --git a/VideoAnalysisCore/Common/Expand/CorsExpand.cs b/VideoAnalysisCore/Common/Expand/CorsExpand.cs index 1001d42..cd877ed 100644 --- a/VideoAnalysisCore/Common/Expand/CorsExpand.cs +++ b/VideoAnalysisCore/Common/Expand/CorsExpand.cs @@ -32,7 +32,9 @@ namespace VideoAnalysisCore.Common.Expand // 获取配置文件中的允许跨域的地址 app.UseCors(options => { - options.WithOrigins("*") // 允许跨域请求的地址 + options + .WithOrigins("*") // 允许跨域请求的地址 + .AllowAnyOrigin() .AllowAnyHeader() // 允许的请求标头 .AllowAnyMethod(); // 允许跨域请求的类型 (GET,POST等) });