From a284792b8d8555c8a60b2e226bf36f91311d7147 Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期三, 16 四月 2025 10:28:00 +0800
Subject: [PATCH] 优化
---
docs/UserController_API_Test.md | 55 ++++++++++++++++++++++++++-
src/main/java/com/weiwojc/controller/UserController.java | 19 +++++++++
2 files changed, 72 insertions(+), 2 deletions(-)
diff --git a/docs/UserController_API_Test.md b/docs/UserController_API_Test.md
index ec28246..da5b37d 100644
--- a/docs/UserController_API_Test.md
+++ b/docs/UserController_API_Test.md
@@ -194,7 +194,57 @@
}
```
-## 3. 鑾峰彇鐢ㄦ埛淇℃伅鎺ュ彛
+## 3. 閫�鍑虹櫥褰曟帴鍙�
+
+### 鎺ュ彛淇℃伅
+- 璇锋眰璺緞锛歚/api/users/logout`
+- 璇锋眰鏂规硶锛歅OST
+- 璇锋眰澶达細闇�瑕佹惡甯� token
+
+### 娴嬭瘯鐢ㄤ緥
+
+#### 鎴愬姛鍦烘櫙
+1. 姝e父閫�鍑虹櫥褰�
+ - 璇锋眰澶达細
+ ```
+ token: eyJhbGciOiJIUzI1NiJ9...
+ ```
+ - 棰勬湡鍝嶅簲锛�
+ ```json
+ {
+ "code": 200,
+ "message": "閫�鍑虹櫥褰曟垚鍔�",
+ "data": null
+ }
+ ```
+
+#### 澶辫触鍦烘櫙
+1. 鏈惡甯� token
+ - 璇锋眰澶达細鏃� token
+ - 棰勬湡鍝嶅簲锛�
+ ```json
+ {
+ "code": 400,
+ "message": "鏈櫥褰曠姸鎬�",
+ "data": null
+ }
+ ```
+
+2. token 鏃犳晥鎴栧凡杩囨湡
+ - 璇锋眰澶达細
+ ```
+ token: invalid_token
+ ```
+ - 棰勬湡鍝嶅簲锛�
+ ```json
+ {
+ "code": 401,
+ "message": "token鏃犳晥鎴栧凡杩囨湡",
+ "data": null
+ }
+ ```
+
+## 4. 鑾峰彇鐢ㄦ埛淇℃伅鎺ュ彛
### 鎺ュ彛淇℃伅
- 璇锋眰璺緞锛歚/api/users/info`
@@ -282,4 +332,5 @@
3. 鐢ㄦ埛淇℃伅鎺ュ彛闇�瑕佹湁鏁堢殑 JWT token
4. 瀵嗙爜鍦ㄤ紶杈撹繃绋嬩腑搴旇浣跨敤 HTTPS 鍔犲瘑
5. 寤鸿鍦ㄦ祴璇曠幆澧冧腑浣跨敤娴嬭瘯鏁版嵁搴�
-6. 娴嬭瘯鏃舵敞鎰忔竻鐞嗘祴璇曟暟鎹紝閬垮厤褰卞搷鍏朵粬娴嬭瘯鐢ㄤ緥
\ No newline at end of file
+6. 娴嬭瘯鏃舵敞鎰忔竻鐞嗘祴璇曟暟鎹紝閬垮厤褰卞搷鍏朵粬娴嬭瘯鐢ㄤ緥
+7. 閫�鍑虹櫥褰曞悗鐨� token 浼氳鍔犲叆榛戝悕鍗曪紝鏃犳硶鍐嶆浣跨敤
\ No newline at end of file
diff --git a/src/main/java/com/weiwojc/controller/UserController.java b/src/main/java/com/weiwojc/controller/UserController.java
index 7a63193..9e12e14 100644
--- a/src/main/java/com/weiwojc/controller/UserController.java
+++ b/src/main/java/com/weiwojc/controller/UserController.java
@@ -6,6 +6,7 @@
import com.weiwojc.model.entity.User;
import com.weiwojc.service.UserService;
import com.weiwojc.utils.JwtUtils;
+import com.weiwojc.utils.TokenBlacklistManager;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
@@ -18,6 +19,7 @@
private final UserService userService;
private final JwtUtils jwtUtils;
+ private final TokenBlacklistManager tokenBlacklistManager;
@PostMapping("/register")
public Result<User> register(@Valid @RequestBody UserRegisterDTO registerDTO) {
@@ -31,6 +33,23 @@
return Result.success("鐧诲綍鎴愬姛", token);
}
+ @PostMapping("/logout")
+ public Result<String> logout(HttpServletRequest request) {
+ String token = request.getHeader("token");
+ if (token == null || token.isEmpty()) {
+ return Result.error("鏈櫥褰曠姸鎬�");
+ }
+
+ // 楠岃瘉token鏄惁鏈夋晥
+ if (!jwtUtils.validateToken(token)) {
+ return Result.unauthorized("token鏃犳晥鎴栧凡杩囨湡");
+ }
+
+ // 灏唗oken鍔犲叆榛戝悕鍗�
+ tokenBlacklistManager.addToBlacklist(token);
+ return Result.success("閫�鍑虹櫥褰曟垚鍔�");
+ }
+
@GetMapping("/info")
public Result<User> getUserInfo(HttpServletRequest request) {
String token = request.getHeader("token");
--
Gitblit v1.9.3