From ab8e68d3a22012cae30fcfab90b6dece100ff918 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 27 Dec 2025 17:25:36 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E3=80=90system=E3=80=91=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20createOAuth2AccessToken=20=E7=9A=84=20tenantId=20?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BC=98=E5=85=88=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20OAuth2RefreshTokenDO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/oauth2/OAuth2TokenServiceImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java index 5342cbdb98..a35945ed77 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java @@ -180,7 +180,13 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { .setClientId(clientDO.getClientId()).setScopes(refreshTokenDO.getScopes()) .setRefreshToken(refreshTokenDO.getRefreshToken()) .setExpiresTime(LocalDateTime.now().plusSeconds(clientDO.getAccessTokenValiditySeconds())); - accessTokenDO.setTenantId(TenantContextHolder.getTenantId()); // 手动设置租户编号,避免缓存到 Redis 的时候,无对应的租户编号 + // 优先从 refreshToken 获取租户编号,避免 ThreadLocal 被污染时导致 tenantId 为 null + // 可能关联的 issue:https://t.zsxq.com/JIi5G + Long tenantId = refreshTokenDO.getTenantId(); + if (tenantId == null) { + tenantId = TenantContextHolder.getTenantId(); + } + accessTokenDO.setTenantId(tenantId); oauth2AccessTokenMapper.insert(accessTokenDO); // 记录到 Redis 中 oauth2AccessTokenRedisDAO.set(accessTokenDO);