🎉 v2.0 已发布:SQLite 数据源 · 认证系统 · 五页面工作台
aivideo.site
v2.0

认证 API

认证模块共 9 个接口,采用 PBKDF2-SHA256 密码加密与自实现 HMAC-SHA256 签名 token(7 天有效期)。

接口一览

#方法路径说明
1GET/api/auth/status查询是否需初始化({need_setup}
2POST/api/auth/setup初始化管理员(创建即登录)
3POST/api/auth/captcha生成 6 位纯数字 SVG 验证码(120s 一次性)
4POST/api/auth/login常规登录(用户名 + 密码 + 验证码)
5POST/api/auth/logout登出
6POST/api/auth/reset-password重置密码(成功后旧 token 失效)
7GET/api/users/me当前用户资料
8PUT/api/users/me修改昵称 / 头像 / 邮箱
9PUT/api/users/me/password修改密码(成功后强制重登)

登录流程

GET /api/auth/status
  ├─ need_setup=true  → 显示初始化面板(无验证码)→ POST /setup → 创建即登录
  └─ need_setup=false → POST /captcha 获取验证码 → POST /login → {token, user}

安全设计

  • 密码:PBKDF2-SHA256(加盐 16B 随机,迭代 200,000),密文存储无明文;
  • token:HMAC-SHA256 签名,payload 含 pwd_ver;改密 / 重置后 password_version+1,旧 token 立即失效(401);
  • 验证码:6 位纯数字、纯 SVG 生成(零依赖)、120s 有效期、一次性(取用即删);
  • 错误码:400(验证码/密码错误)、401(未登录/token 失效)、422(校验失败)。

请求示例

# 登录
curl -X POST http://localhost:8000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"your_password","captcha_id":"...","code":"123456"}'
 
# 携带 token 访问用户资料
curl http://localhost:8000/api/users/me \
  -H "Authorization: Bearer <token>"
改进此文档

发现错误或想补充内容?点击在 GitHub 上编辑。