Browse Source

fix(wechat): 优化用户信息接口的 userId 获取逻辑

- 移除冗余的 token 解析代码,统一通过拦截器获取 userId
- 简化 userId 类型判断,兼容 Integer 转 Long 场景
- 当无法获取有效 userId 时直接返回 401 错误
- 更新注释内容以准确反映当前实现逻辑
mcbaiyun 2 months ago
parent
commit
cef702bc8d

+ 6 - 19
src/main/java/work/baiyun/chronicdiseaseapp/controller/WeChatController.java

@@ -94,7 +94,7 @@ public class WeChatController {
     @Operation(summary = "获取用户信息", description = "根据 token 返回当前用户信息(支持 Authorization/X-Token/token)")
     @PostMapping(path = "/user_info", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
     public R<?> getUserInfo(@RequestBody(required = false) Map<String, String> body, HttpServletRequest request) {
-        // 优先使用拦截器放入的 currentUserId(AuthInterceptor 已验证 X-Token)
+        // 使用拦截器放入的 currentUserId(AuthInterceptor 已验证 X-Token)
         Object attr = request.getAttribute("currentUserId");
         Long userId = null;
 
@@ -133,33 +133,20 @@ public class WeChatController {
     @PostMapping(path = "/update_user_info", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
     public R<?> updateUserInfo(@RequestBody(required = false) work.baiyun.chronicdiseaseapp.model.vo.UpdateUserInfoRequest req,
                                HttpServletRequest request) {
-        // resolve userId same as getUserInfo
+        // 使用拦截器放入的 currentUserId(AuthInterceptor 已验证 X-Token)
         Object attr = request.getAttribute("currentUserId");
         Long userId = null;
+
         if (attr instanceof Long) {
             userId = (Long) attr;
         } else if (attr instanceof Integer) {
+            // 有时框架可能将数字解析为 Integer
             userId = ((Integer) attr).longValue();
         }
 
+        // 如果拦截器没有提供 userId,则401
         if (userId == null) {
-            String token = null;
-            if (request.getHeader("X-Token") != null && !request.getHeader("X-Token").isEmpty()) {
-                token = request.getHeader("X-Token");
-            } else if (request.getHeader("token") != null && !request.getHeader("token").isEmpty()) {
-                token = request.getHeader("token");
-            } else if (req != null && req.getToken() != null && !req.getToken().isEmpty()) {
-                token = req.getToken();
-            }
-
-            if (token == null || token.isEmpty()) {
-                return R.fail(401, "Missing token");
-            }
-
-            userId = tokenService.validateToken(token);
-            if (userId == null) {
-                return R.fail(401, "Invalid or expired token");
-            }
+            return R.fail(401, "No valid userId");
         }
 
         UserInfo ui = userInfoMapper.selectById(userId);