From 7e29eafb48ab42a3d098f7dd2368ab892a82c797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Tue, 16 Sep 2025 20:43:46 +0800 Subject: [PATCH] =?UTF-8?q?fix=20(farm):=20=E9=9B=86=E6=88=90=E6=B5=8B?= =?UTF-8?q?=E8=AF=95:=20=E5=BE=AE=E6=9C=8D=E5=8A=A1API,=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E7=AB=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 微信端,获取多个服务token,用于切换服务 --- .../controller/admin/auth/AuthController.java | 4 +- .../system/util/TokenExtractorUtil.java | 43 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/util/TokenExtractorUtil.java diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java index a4e19708..3b532083 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.system.service.permission.PermissionService; import cn.iocoder.yudao.module.system.service.permission.RoleService; import cn.iocoder.yudao.module.system.service.social.SocialClientService; import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import cn.iocoder.yudao.module.system.util.TokenExtractorUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; @@ -154,7 +155,8 @@ public class AuthController { @Operation(summary = "获取租户的令牌列表") public CommonResult> getTenantTokenList(@RequestHeader("authorization") String authorization, @RequestBody @Valid TenantTokenReqVO reqVO) { - List res = authService.getTenantTokenList(reqVO.getPhoneNumber(), authorization); + String token = TokenExtractorUtil.extractToken(authorization); + List res = authService.getTenantTokenList(reqVO.getPhoneNumber(), token); return success(res); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/util/TokenExtractorUtil.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/util/TokenExtractorUtil.java new file mode 100644 index 00000000..58ab3fa8 --- /dev/null +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/util/TokenExtractorUtil.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.system.util; + +/** + * @description: + * @author: binda + * @date: 2025/9/16 20:31 + */ +public class TokenExtractorUtil { + /** + * 从Bearer令牌字符串中截取令牌部分 + * @param bearerToken 完整的Bearer令牌字符串,格式为 "Bearer {token}" + * @return 截取后的令牌字符串,如果格式不正确则返回null + */ + public static String extractToken(String bearerToken) { + if (bearerToken == null || bearerToken.trim().isEmpty()) { + return null; + } + + // 使用空格分割字符串 + String[] parts = bearerToken.split(" "); + + // 检查格式是否正确(至少有两部分,第一部分是"Bearer") + if (parts.length < 2 || !"Bearer".equals(parts[0])) { + return null; + } + + // 返回令牌部分(可能是第二部分或后面所有部分的组合) + // 处理令牌中可能包含空格的情况 + if (parts.length == 2) { + return parts[1]; + } else { + // 如果令牌本身包含空格,重新组合第二部分及之后的部分 + StringBuilder tokenBuilder = new StringBuilder(); + for (int i = 1; i < parts.length; i++) { + if (i > 1) { + tokenBuilder.append(" "); + } + tokenBuilder.append(parts[i]); + } + return tokenBuilder.toString(); + } + } +}