瀏覽代碼

1、修正:在请求头获取租户id前没有检查HttpContext是不是空值。
2、增加一个Filter,为swagger增加在请求头输入租户id的功能。

eyupaopao 5 月之前
父節點
當前提交
685e82bda2

+ 1 - 1
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarRepository.cs

@@ -39,7 +39,7 @@ public class SqlSugarRepository<T> : SimpleClient<T>, ISqlSugarRepository<T> whe
             return;
 
         // 看请求头有没有租户id
-        var tenantId = App.HttpContext.Request.Headers.GetValue(ClaimConst.TenantId).ToString();
+        var tenantId = App.HttpContext?.Request.Headers.GetValue(ClaimConst.TenantId).ToString();
         if (tenantId == SqlSugarConst.MainConfigId) return;
         else if (string.IsNullOrWhiteSpace(tenantId))
         {

+ 33 - 0
Admin.NET/Admin.NET.Core/Utils/TenantHeaderOperationFilter.cs

@@ -0,0 +1,33 @@
+using Admin.NET.Core;
+using Microsoft.OpenApi.Models;
+using Swashbuckle.AspNetCore.SwaggerGen;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core;
+
+/// <summary>
+/// 租户头部参数过滤器
+/// </summary>
+public class TenantHeaderOperationFilter : IOperationFilter
+{
+    /// <summary>
+    /// 应用租户头部参数过滤器
+    /// </summary>
+    public void Apply(OpenApiOperation operation, OperationFilterContext context)
+    {
+        operation.Parameters ??= new List<OpenApiParameter>();
+
+        operation.Parameters.Add(new OpenApiParameter
+        {
+            Name = ClaimConst.TenantId,
+            In = ParameterLocation.Header,
+            Required = false,
+            AllowEmptyValue = true,
+            Description = "租户ID(留空表示默认租户)"
+        });
+    }
+}

+ 1 - 0
Admin.NET/Admin.NET.Web.Core/Startup.cs

@@ -237,6 +237,7 @@ public class Startup : AppStartup
                 Title = "Admin.NET API",
                 Description = "Admin.NET 通用权限开发平台"
             });
+            c.OperationFilter<TenantHeaderOperationFilter>();
         });
 
         // 将IP地址数据库文件完全加载到内存,提升查询速度(以空间换时间,内存将会增加60-70M)