# 认证管理模块 API 文档

> **文档版本**: v1.0
> **创建日期**: 2026-06-16
> **作者**: 张翔
> **状态**: 正式发布

---

## 目录

1. [概述](#概述)
2. [基础路径](#基础路径)
3. [认证接口](#认证接口)
   - [用户名+密码登录](#用户名密码登录)
   - [获取用户信息](#获取用户信息)
4. [数据模型](#数据模型)
   - [LoginRequest](#loginrequest)
   - [LoginResponse](#loginresponse)
   - [UserInfo](#userinfo)
5. [响应码说明](#响应码说明)

---

## 概述

认证管理模块提供用户登录认证和用户信息查询功能。采用 Spring WebFlux 响应式编程，支持高并发场景。

## 基础路径

所有接口的基础路径为: `http://{host}:{port}/api/auth`

---

## 认证接口

### 用户名+密码登录

| 属性 | 值 |
|------|-----|
| **HTTP方法** | POST |
| **接口路径** | `/api/auth/login` |
| **所属文件** | `AuthHandler.java` |

**请求参数**:

| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|--------|------|------|--------|------|
| username | string | 是 | - | 用户名 |
| password | string | 是 | - | 密码 |

**成功响应** (200 OK):

```json
{
  "code": 200,
  "message": "登录成功",
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "tokenType": "Bearer",
    "expiresIn": 7200,
    "userInfo": {
      "id": 1,
      "username": "admin",
      "email": "admin@example.com",
      "phone": "13800138000",
      "nickname": "超级管理员",
      "status": 1,
      "roleId": 1
    }
  }
}
```

**失败响应** (400 Bad Request):

```json
{
  "code": 400,
  "message": "用户名或密码错误"
}
```

---

### 获取用户信息

| 属性 | 值 |
|------|-----|
| **HTTP方法** | GET |
| **接口路径** | `/api/auth/users/{id}` |
| **所属文件** | `AuthHandler.java` |

**路径参数**:

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | Long | 是 | 用户ID |

**成功响应** (200 OK):

```json
{
  "code": 200,
  "message": "获取用户信息成功",
  "data": {
    "id": 1,
    "username": "admin",
    "email": "admin@example.com",
    "phone": "13800138000",
    "nickname": "超级管理员",
    "status": 1,
    "roleId": 1
  }
}
```

**失败响应** (400 Bad Request):

```json
{
  "code": 400,
  "message": "无效的用户ID"
}
```

---

## 数据模型

### LoginRequest

用户登录请求对象。

| 字段 | 类型 | 必填 | 说明 | 示例 |
|------|------|------|------|------|
| username | string | 是 | 用户名 | admin |
| password | string | 是 | 密码 | Test@123 |

### LoginResponse

用户登录响应对象。

| 字段 | 类型 | 说明 | 示例 |
|------|------|------|------|
| accessToken | string | 访问令牌 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
| refreshToken | string | 刷新令牌 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
| tokenType | string | 令牌类型 | Bearer |
| expiresIn | Long | 过期时间（秒） | 7200 |
| userInfo | UserInfo | 用户信息 | - |

### UserInfo

用户信息对象。

| 字段 | 类型 | 说明 | 示例 |
|------|------|------|------|
| id | Long | 用户ID | 1 |
| username | string | 用户名 | admin |
| email | string | 邮箱 | admin@example.com |
| phone | string | 手机号 | 13800138000 |
| nickname | string | 昵称 | 超级管理员 |
| status | Integer | 状态：0-禁用，1-正常 | 1 |
| roleId | Long | 角色ID | 1 |

---

## 响应码说明

| 响应码 | 说明 |
|--------|------|
| 200 | 成功 |
| 400 | 请求参数错误（如用户名密码错误、无效的用户ID） |
| 401 | 未授权（认证失败） |
| 403 | 禁止访问 |
| 404 | 资源未找到 |
| 409 | 冲突（如重复数据） |
| 500 | 服务器内部错误 |

---

## 业务规则

1. 登录成功后返回的 `accessToken` 用于后续接口的身份认证
2. `accessToken` 有效期为 2 小时（7200 秒）
3. `refreshToken` 用于刷新 `accessToken`，有效期为 7 天
4. 用户状态 `status` 为 0 时表示禁用，无法登录
5. 所有需要认证的接口需要在请求头中携带 `Authorization: Bearer {accessToken}`
