认证授权 API
认证授权模块负责处理用户身份的所有方面,包括注册、登录、密码重置和会话管理。API 使用 JWT (JSON Web Token) 进行身份验证。
认证流程
步骤 1: 发送验证码
用户提供邮箱地址,系统向该邮箱发送一个有时效性的验证码。
POST /api/v1/auth/send_code步骤 2: 注册或登录
用户提交邮箱、验证码以及其他必要信息(如密码)来完成注册或登录。
- 验证码登录:
POST /api/v1/auth/verify - 密码注册:
POST /api/v1/auth/register - 密码登录:
POST /api/v1/auth/login
步骤 3: 获取 Token
成功验证后,服务器会返回 access_token 和 refresh_token。
步骤 4: 访问受保护资源
在请求需要认证的接口时,将 access_token 放入 Authorization 请求头中。
Authorization: Bearer <your_access_token>步骤 5: 刷新 Token
access_token 过期后,使用 refresh_token 获取新的 access_token。
POST /api/v1/auth/refresh_tokenAPI 端点详情
发送验证码
POST /auth/send_code
向指定邮箱发送用于注册、登录或重置密码的验证码。
请求体:
{
"email": "user@example.com",
"purpose": "register", // 'register', 'login', or 'reset_password'
"lang": "zh"
}响应 (200 OK):
{
"success": true,
"message": "验证码已发送"
}验证码登录/验证
POST /auth/verify
验证邮箱和验证码,如果用户存在则完成登录并返回 Token。
请求体:
{
"email": "user@example.com",
"code": "123456",
"lang": "zh"
}响应 (200 OK):
{
"access_token": "...",
"refresh_token": "...",
"token_type": "bearer"
}用户注册
POST /auth/register
使用邮箱、用户名、密码和验证码创建新用户。成功后会自动登录。
请求体:
{
"email": "user@example.com",
"username": "newuser",
"password": "your_strong_password",
"code": "123456",
"lang": "zh"
}响应 (200 OK):
{
"access_token": "...",
"refresh_token": "...",
"token_type": "bearer"
}密码登录
POST /auth/login
使用邮箱和密码进行登录。
请求体:
{
"email": "user@example.com",
"password": "your_password",
"lang": "zh"
}响应 (200 OK):
{
"access_token": "...",
"refresh_token": "...",
"token_type": "bearer"
}获取当前用户信息
GET /auth/me
获取当前已登录用户的个人资料和会员信息。需要有效的 access_token。
请求头:
{
"Authorization": "Bearer <your_access_token>"
}响应 (200 OK):
{
"id": 1,
"username": "user",
"email": "user@example.com",
"user_type": "normal",
"membership_type": "free",
"last_login_at": "2024-01-01T00:00:00Z",
"created_at": "2024-01-01T00:00:00Z"
}刷新 Token
POST /auth/refresh_token
使用 refresh_token 获取一个新的 access_token。
请求体:
{
"refresh_token": "your_refresh_token",
"lang": "zh"
}响应 (200 OK):
{
"access_token": "...",
"refresh_token": "...",
"token_type": "bearer"
}重置密码
POST /auth/reset_password
在验证邮箱和验证码后,重置为新密码。
请求体:
{
"email": "user@example.com",
"code": "123456",
"new_password": "your_new_strong_password",
"lang": "zh"
}响应 (200 OK):
{
"success": true,
"message": "密码重置成功"
}