Class CompositeTenantIdResolver
java.lang.Object
io.leandev.appfuse.security.tenant.resolver.CompositeTenantIdResolver
- All Implemented Interfaces:
TenantIdResolver
組合多個 TenantIdResolver 的複合解析器
依序嘗試每個 resolver,直到其中一個返回非 null 的租戶 ID。 這允許應用程式支援多種認證方式,每種方式有不同的租戶 ID 解析邏輯。
使用範例:
// 方式 1:使用建構子
TenantIdResolver resolver = new CompositeTenantIdResolver(
new JwtClaimTenantIdResolver(),
new JwtDetailsTenantIdResolver(),
new UserDetailsTenantIdResolver()
);
// 方式 2:使用 Builder
TenantIdResolver resolver = CompositeTenantIdResolver.builder()
.add(new JwtClaimTenantIdResolver())
.add(new JwtDetailsTenantIdResolver())
.add(new UserDetailsTenantIdResolver())
.build();
// 方式 3:使用預設配置
TenantIdResolver resolver = CompositeTenantIdResolver.withDefaults();
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classCompositeTenantIdResolver 的 Builder -
Constructor Summary
ConstructorsConstructorDescriptionCompositeTenantIdResolver(TenantIdResolver... resolvers) 建構組合 resolverCompositeTenantIdResolver(List<TenantIdResolver> resolvers) 建構組合 resolver -
Method Summary
Modifier and TypeMethodDescriptionbuilder()建立 Builderresolve(org.springframework.security.core.Authentication authentication) 從認證資訊中解析租戶 IDstatic CompositeTenantIdResolver建立包含預設 resolver 的組合static CompositeTenantIdResolverwithDefaults(String claimName) 建立包含預設 resolver 的組合,使用指定的 claim 名稱
-
Constructor Details
-
CompositeTenantIdResolver
建構組合 resolver- Parameters:
resolvers- 要組合的 resolver 列表,依序嘗試
-
CompositeTenantIdResolver
建構組合 resolver- Parameters:
resolvers- 要組合的 resolver 列表,依序嘗試
-
-
Method Details
-
resolve
Description copied from interface:TenantIdResolver從認證資訊中解析租戶 ID- Specified by:
resolvein interfaceTenantIdResolver- Parameters:
authentication- Spring Security 認證物件,不為 null- Returns:
- 租戶 ID,若此 resolver 無法處理則返回 null
-
withDefaults
建立包含預設 resolver 的組合
預設順序:
JwtClaimTenantIdResolver- OAuth2 JWTJwtDetailsTenantIdResolver- 本地 JWTUserDetailsTenantIdResolver- Basic Auth / Form Login
- Returns:
- 預設配置的組合 resolver
-
withDefaults
建立包含預設 resolver 的組合,使用指定的 claim 名稱- Parameters:
claimName- JWT 中的租戶 ID claim 名稱- Returns:
- 使用指定 claim 名稱的組合 resolver
-
builder
-