认证与账号
认证由后端统一提供,前端通过 Authorization: Bearer <token> 携带令牌。
| 方法 | 路径 | 说明 | 认证 |
|---|---|---|---|
| POST | /api/auth/login |
登录 | 否 |
| POST | /api/auth/register |
注册 | 否 |
| POST | /api/auth/logout |
登出 | Python:是;Java:兼容未登录 |
成功后返回令牌与用户信息(含权限码与角色),前端保存令牌并进入后台。失败时返回中文错误信息并记录审计日志。
注册行为受两个系统设置控制:
- 开放注册(
openRegistration)为false时,注册接口返回「注册已关闭」。 - 人工审核(
manualReview)为true时,新账号被分配pending_review角色,接口只返回「注册成功,请等待管理员审核」,不签发令牌;为false时直接分配user角色并自动登录。
登录与注册按 IP 限制:每分钟最多 5 次,超出返回:
- 登录:「登录尝试过于频繁,请稍后再试」
- 注册:「注册尝试过于频繁,请稍后再试」
限制在凭据校验之前生效。IP 解析顺序为 X-Real-IP(Nginx,不可伪造)→ X-Forwarded-For 首段 → 直连地址。
管理员可在系统设置中开启维护模式。开启后:
- 非管理员登录会被拒绝,返回自定义的维护提示(未设置时为「系统维护中」)。
- 管理员仍可正常登录,以便关闭维护模式。
| Python | Java | |
|---|---|---|
| 令牌类型 | JWT(PyJWT,HS256) | Sa-Token UUID 会话令牌 |
| 有效期 | 默认 24 小时 | 默认 86400 秒 |
| 登出 | 需登录,删除服务端会话 | 兼容未登录调用,同样返回成功 |
前端请求层在收到 401 时自动清除本地登录状态并跳转登录页,无需在每个页面单独处理。