Blame view

泰额版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/MultiTenancy/JwtClaimTenantResolveContributor.cs 1.15 KB
a1a0369d   李曜臣   5-25代码优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  using Microsoft.AspNetCore.Http;
  using Volo.Abp.MultiTenancy;
  using Volo.Abp.Security.Claims;
  using Yi.Framework.Rbac.Domain.Shared.Consts;
  
  namespace FoodLabeling.Application.MultiTenancy;
  
  /// <summary>
  ///  JWT Claim <see cref="TokenTypeConst.TenantId"/> 解析当前租户(泰额版登录写入)
  /// </summary>
  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;
          var user = httpContext?.HttpContext?.User;
          if (user?.Identity?.IsAuthenticated != true)
          {
              return Task.CompletedTask;
          }
  
          var tenantClaim = user.FindFirst(TokenTypeConst.TenantId)?.Value
                            ?? user.FindFirst(AbpClaimTypes.TenantId)?.Value;
          if (!string.IsNullOrWhiteSpace(tenantClaim))
          {
              context.TenantIdOrName = tenantClaim;
          }
  
          return Task.CompletedTask;
      }
  }