256 lines
4.7 KiB
Markdown
256 lines
4.7 KiB
Markdown
# 用户认证API文档
|
||
|
||
本文档详细说明了系统提供的用户认证相关API,包括注册、登录、密码重置等功能。
|
||
|
||
## 基础URL
|
||
|
||
所有用户认证相关的API都在以下基础路径下:
|
||
|
||
```
|
||
/api/user/auth/
|
||
```
|
||
|
||
## API概览
|
||
|
||
| 接口路径 | 方法 | 描述 |
|
||
|---------|------|------|
|
||
| `/api/user/auth/register/` | POST | 用户名注册 |
|
||
| `/api/user/auth/username/login/` | POST | 用户名密码登录 |
|
||
| `/api/user/auth/email/login/` | POST | 邮箱密码登录 |
|
||
| `/api/user/auth/phone/login/` | POST | 手机验证码登录 |
|
||
| `/api/user/auth/phone/verify/` | POST | 发送手机验证码 |
|
||
| `/api/user/auth/login/` | POST | 标准登录接口(dj_rest_auth) |
|
||
| `/api/user/auth/logout/` | POST | 登出 |
|
||
| `/api/user/auth/password/reset/` | POST | 密码重置 |
|
||
| `/api/user/auth/password/reset/confirm/` | POST | 密码重置确认 |
|
||
| `/api/user/auth/user/` | GET | 获取当前用户信息 |
|
||
| `/api/user/info/` | GET | 获取当前用户详细信息 |
|
||
|
||
## 详细API说明
|
||
|
||
### 用户名注册
|
||
|
||
```
|
||
POST /api/user/auth/register/
|
||
```
|
||
|
||
使用用户名和密码创建新用户账号。
|
||
|
||
**请求参数:**
|
||
|
||
| 参数名 | 类型 | 必填 | 描述 |
|
||
|-------|-----|------|-----|
|
||
| username | string | 是 | 用户名 |
|
||
| password1 | string | 是 | 密码 |
|
||
| password2 | string | 是 | 确认密码 |
|
||
| email | string | 否 | 邮箱 |
|
||
| phone_number | string | 否 | 手机号码 |
|
||
|
||
**响应示例:**
|
||
|
||
```json
|
||
{
|
||
"status": "success",
|
||
"code": 200,
|
||
"message": "User registered successfully"
|
||
}
|
||
```
|
||
|
||
### 用户名密码登录
|
||
|
||
```
|
||
POST /api/user/auth/username/login/
|
||
```
|
||
|
||
使用用户名和密码进行登录。
|
||
|
||
**请求参数:**
|
||
|
||
| 参数名 | 类型 | 必填 | 描述 |
|
||
|-------|-----|------|-----|
|
||
| username | string | 是 | 用户名 |
|
||
| password | string | 是 | 密码 |
|
||
|
||
**响应示例:**
|
||
|
||
```json
|
||
{
|
||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||
}
|
||
```
|
||
|
||
### 邮箱密码登录
|
||
|
||
```
|
||
POST /api/user/auth/email/login/
|
||
```
|
||
|
||
使用邮箱和密码进行登录。
|
||
|
||
**请求参数:**
|
||
|
||
| 参数名 | 类型 | 必填 | 描述 |
|
||
|-------|-----|------|-----|
|
||
| email | string | 是 | 邮箱 |
|
||
| password | string | 是 | 密码 |
|
||
|
||
**响应示例:**
|
||
|
||
```json
|
||
{
|
||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||
}
|
||
```
|
||
|
||
### 手机验证码登录
|
||
|
||
```
|
||
POST /api/user/auth/phone/login/
|
||
```
|
||
|
||
使用手机号和验证码进行登录。
|
||
|
||
**请求参数:**
|
||
|
||
| 参数名 | 类型 | 必填 | 描述 |
|
||
|-------|-----|------|-----|
|
||
| phone_number | string | 是 | 手机号码 |
|
||
| code | string | 是 | 验证码 |
|
||
|
||
**响应示例:**
|
||
|
||
```json
|
||
{
|
||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||
}
|
||
```
|
||
|
||
### 发送手机验证码
|
||
|
||
```
|
||
POST /api/user/auth/phone/verify/
|
||
```
|
||
|
||
向指定手机号发送验证码。
|
||
|
||
**请求参数:**
|
||
|
||
| 参数名 | 类型 | 必填 | 描述 |
|
||
|-------|-----|------|-----|
|
||
| phone_number | string | 是 | 手机号码 |
|
||
|
||
**响应示例:**
|
||
|
||
```json
|
||
{
|
||
"message": "Verification code sent."
|
||
}
|
||
```
|
||
|
||
### 获取用户信息(标准)
|
||
|
||
```
|
||
GET /api/user/auth/user/
|
||
```
|
||
|
||
获取当前登录用户的基本信息。
|
||
|
||
**安全说明:**
|
||
- 不返回密码和敏感权限信息
|
||
- 只有经过认证的用户可以访问
|
||
|
||
**请求头:**
|
||
|
||
需要包含认证令牌:
|
||
|
||
```
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
**响应示例:**
|
||
|
||
```json
|
||
{
|
||
"id": 1,
|
||
"username": "example_user",
|
||
"email": "user@example.com",
|
||
"phone_number": "13800138000",
|
||
"first_name": "",
|
||
"last_name": ""
|
||
}
|
||
```
|
||
|
||
### 获取用户详细信息
|
||
|
||
```
|
||
GET /api/user/info/
|
||
```
|
||
|
||
返回当前登录用户的详细信息。
|
||
|
||
**安全说明:**
|
||
- 不返回密码和敏感权限信息
|
||
- 只有经过认证的用户可以访问
|
||
|
||
**请求头:**
|
||
|
||
需要包含认证令牌:
|
||
|
||
```
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
**响应示例:**
|
||
|
||
```json
|
||
{
|
||
"status": "success",
|
||
"code": 200,
|
||
"data": {
|
||
"id": 1,
|
||
"username": "example_user",
|
||
"email": "user@example.com",
|
||
"phone_number": "13800138000",
|
||
"date_joined": "2023-01-01T00:00:00Z",
|
||
"last_login": "2023-01-02T10:30:00Z",
|
||
"first_name": "",
|
||
"last_name": "",
|
||
"is_active": true
|
||
}
|
||
}
|
||
```
|
||
|
||
## 错误响应
|
||
|
||
所有API可能返回以下错误:
|
||
|
||
**400 Bad Request**
|
||
|
||
```json
|
||
{
|
||
"error": "具体错误信息"
|
||
}
|
||
```
|
||
|
||
**401 Unauthorized**
|
||
|
||
```json
|
||
{
|
||
"detail": "认证失败信息"
|
||
}
|
||
```
|
||
|
||
**403 Forbidden**
|
||
|
||
```json
|
||
{
|
||
"detail": "权限错误信息"
|
||
}
|
||
```
|
||
|
||
## 认证方式
|
||
|
||
系统支持以下认证方式:
|
||
|
||
1. **Token认证**:在请求头中添加 `Authorization: Bearer {token}`
|
||
2. **Session认证**:适用于浏览器访问 |