docs/UserController_API_Test.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/weiwojc/controller/UserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
docs/UserController_API_Test.md
@@ -194,7 +194,57 @@ } ``` ## 3. 获取用户信息接口 ## 3. 退出登录接口 ### 接口信息 - 请求路径:`/api/users/logout` - 请求方法:POST - 请求头:需要携带 token ### 测试用例 #### 成功场景 1. 正常退出登录 - 请求头: ``` 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` @@ -283,3 +333,4 @@ 4. 密码在传输过程中应该使用 HTTPS 加密 5. 建议在测试环境中使用测试数据库 6. 测试时注意清理测试数据,避免影响其他测试用例 7. 退出登录后的 token 会被加入黑名单,无法再次使用 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无效或已过期"); } // 将token加入黑名单 tokenBlacklistManager.addToBlacklist(token); return Result.success("退出登录成功"); } @GetMapping("/info") public Result<User> getUserInfo(HttpServletRequest request) { String token = request.getHeader("token");