Class JwtDetailsTenantIdResolver

java.lang.Object
io.leandev.appfuse.security.tenant.resolver.JwtDetailsTenantIdResolver
All Implemented Interfaces:
TenantIdResolver

public class JwtDetailsTenantIdResolver extends Object implements TenantIdResolver

從 Authentication details 中的 JWT Claims 解析租戶 ID

適用於使用 LocalJwtAuthenticationProvider 的場景,此時 JWT claims 存放在 authentication.getDetails() 中。

LocalJwtAuthenticationProvider 在建立認證時,會將 claims 設定到 details:

authenticatedToken.setDetails(claims);

範例:

// authentication.getDetails() 是 Claims,包含 tenantId
TenantIdResolver resolver = new JwtDetailsTenantIdResolver("tenantId");
String tenantId = resolver.resolve(authentication); // "tenant-123"
  • Field Details

  • Constructor Details

    • JwtDetailsTenantIdResolver

      public JwtDetailsTenantIdResolver()
      使用預設 claim 名稱 "tenantId" 建構
    • JwtDetailsTenantIdResolver

      public JwtDetailsTenantIdResolver(String claimName)
      使用指定的 claim 名稱建構
      Parameters:
      claimName - JWT 中的租戶 ID claim 名稱
  • Method Details

    • resolve

      public String resolve(org.springframework.security.core.Authentication authentication)
      Description copied from interface: TenantIdResolver
      從認證資訊中解析租戶 ID
      Specified by:
      resolve in interface TenantIdResolver
      Parameters:
      authentication - Spring Security 認證物件,不為 null
      Returns:
      租戶 ID,若此 resolver 無法處理則返回 null