hongjli
2025-04-16 a284792b8d8555c8a60b2e226bf36f91311d7147
优化
已修改2个文件
72 ■■■■■ 文件已修改
docs/UserController_API_Test.md 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/weiwojc/controller/UserController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | 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");