Jelajahi Sumber

优化代码,添加接口

liuchengsen 2 bulan lalu
induk
melakukan
bf319e982c

+ 1 - 1
zhijiayun-gateway/src/test/java/com/xuekairui/gateway/AuthControllerTest.java

@@ -256,7 +256,7 @@ class AuthControllerTest extends GatewayBaseTest {
     void refreshToken_withInvalidToken_shouldReturnBusinessError() throws Exception {
         mockMvc.perform(post("/api/auth/refresh")
                         .contentType(MediaType.APPLICATION_JSON)
-                        .content("\"invalid_refresh_token\""))
+                        .content("{\"refreshToken\":\"invalid_refresh_token\"}"))
                 .andExpect(status().isOk())
                 .andExpect(jsonPath("$.code").value(org.hamcrest.Matchers.not(200)));
     }

+ 1 - 1
zhijiayun-gateway/src/test/java/com/xuekairui/gateway/BusinessLicenseAndCouponTest.java

@@ -251,7 +251,7 @@ class BusinessLicenseAndCouponTest extends GatewayBaseTest {
         mockMvc.perform(post("/api/auth/refresh")
                         .header("Authorization", "Bearer " + userToken())
                         .contentType(MediaType.APPLICATION_JSON)
-                        .content("\"test_refresh_token\""))
+                        .content("{\"refreshToken\":\"test_refresh_token\"}"))
                 .andExpect(status().isOk());
         // 如果token无效,会返回业务错误,但不应401
     }

+ 1 - 1
zhijiayun-gateway/src/test/java/com/xuekairui/gateway/UserAuthFlowTest.java

@@ -132,7 +132,7 @@ public class UserAuthFlowTest extends GatewayBaseTest {
     public void testRefreshToken() throws Exception {
         MvcResult result = mockMvc.perform(post("/api/auth/refresh")
                 .contentType(MediaType.APPLICATION_JSON)
-                .content("\"" + refreshToken + "\""))
+                .content("{\"refreshToken\":\"" + refreshToken + "\"}"))
                 .andExpect(status().isOk())
                 .andExpect(jsonPath("$.code").value(200))
                 .andExpect(jsonPath("$.data.accessToken").exists())

+ 2 - 7
zhijiayun-user/src/main/java/com/xuekairui/user/controller/AuthController.java

@@ -97,13 +97,8 @@ public class AuthController {
      * POST /api/auth/refresh
      */
     @PostMapping("/refresh")
-    public Result<LoginResponse> refreshToken(@RequestBody String refreshToken) {
-        // 兼容前端以 JSON 字符串形式传递刷新 Token(去除首尾引号)
-        if (refreshToken != null && refreshToken.length() >= 2
-                && refreshToken.startsWith("\"") && refreshToken.endsWith("\"")) {
-            refreshToken = refreshToken.substring(1, refreshToken.length() - 1);
-        }
-        LoginResponse response = authService.refreshToken(refreshToken);
+    public Result<LoginResponse> refreshToken(@Valid @RequestBody RefreshTokenRequest request) {
+        LoginResponse response = authService.refreshToken(request.getRefreshToken());
         return Result.success(response);
     }
 

+ 15 - 0
zhijiayun-user/src/main/java/com/xuekairui/user/dto/RefreshTokenRequest.java

@@ -0,0 +1,15 @@
+package com.xuekairui.user.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * 刷新Token请求
+ */
+@Data
+public class RefreshTokenRequest {
+
+    /** refreshToken */
+    @NotBlank(message = "refreshToken不能为空")
+    private String refreshToken;
+}

+ 1 - 0
zhijiayun-user/src/main/java/com/xuekairui/user/util/JwtUtil.java

@@ -101,6 +101,7 @@ public class JwtUtil {
         } catch (ExpiredJwtException e) {
             throw new BusinessException(ErrorCode.TOKEN_EXPIRED);
         } catch (JwtException e) {
+            log.warn("JWT解析失败, 原因: {}", e.getMessage());
             throw new BusinessException(ErrorCode.TOKEN_INVALID);
         }
     }