using FoodLabeling.Application.Helpers; using Microsoft.AspNetCore.Http; using Volo.Abp.MultiTenancy; namespace FoodLabeling.Application.MultiTenancy; /// /// 从 JWT Claim TenantId 解析当前租户(泰额版登录写入) /// public class JwtClaimTenantResolveContributor : TenantResolveContributorBase { public const string ContributorName = "JwtClaim"; public override string Name => ContributorName; public override Task ResolveAsync(ITenantResolveContext context) { var httpContext = (context.ServiceProvider.GetService(typeof(IHttpContextAccessor)) as IHttpContextAccessor) ?.HttpContext; if (httpContext is null) { return Task.CompletedTask; } var tenantClaim = TenantBusinessContextHelper.TryGetTenantIdClaimValue(httpContext); if (!string.IsNullOrWhiteSpace(tenantClaim) && Guid.TryParse(tenantClaim, out var tenantGuid) && tenantGuid != Guid.Empty) { context.TenantIdOrName = tenantClaim; } return Task.CompletedTask; } }