| 123456789101112131415161718192021222324252627282930313233343536 |
- using Admin.NET.Core;
- using Microsoft.AspNetCore.Http;
- namespace Admin.NET.Plugin.AiDOP.Infrastructure;
- /// <summary>
- /// 从 HTTP 请求(显式参数 / JWT / query tenantId)解析 TenantId;均无有效值时回退框架默认租户。
- /// </summary>
- public static class AidopTenantHelper
- {
- public static long GetTenantId(HttpContext? ctx) => Resolve(ctx);
- /// <summary>
- /// 解析租户:requestTenantId > JWT Claim > query tenantId > DefaultTenantId。
- /// </summary>
- public static long Resolve(HttpContext? ctx, long? requestTenantId = null)
- {
- if (requestTenantId is > 0)
- return requestTenantId.Value;
- var claim = ctx?.User?.FindFirst(ClaimConst.TenantId)?.Value;
- if (!string.IsNullOrWhiteSpace(claim) && long.TryParse(claim, out var tid) && tid > 0)
- return tid;
- if (TryParseTenantId(ctx?.Request.Query["tenantId"].ToString(), out var queryTid))
- return queryTid;
- return SqlSugarConst.DefaultTenantId;
- }
- private static bool TryParseTenantId(string? raw, out long tenantId)
- {
- tenantId = 0;
- return !string.IsNullOrWhiteSpace(raw) && long.TryParse(raw.Trim(), out tenantId) && tenantId > 0;
- }
- }
|