Files
WonderQ-Project/docs/decisions/0001-admin-login-captcha.md
duanshuwen 6245159e7c feat: 添加后台登录验证码、记住密码功能,优化媒体资源与前端规范
- 新增后台登录图形验证码功能,完善登录安全防护
- 新增登录rememberMe参数,控制Refresh Token的会话持久化策略
- 实现OSS私有桶媒体URL自动签名,统一处理图片资源的临时访问签名
- 新增素材库数据库表与上传API,规范媒体资源管理流程
- 统一前端UI图标使用@element-plus/icons-vue,重构布局图标组件
- 登录页新增验证码输入、刷新功能,添加账号记忆与记住密码逻辑
- 更新全套文档,补充API契约、技术决策记录与集成流程说明
- 修复多个业务页面的图标展示问题,新增认证流程相关测试用例
2026-08-27 07:50:59 +08:00

25 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 0001 后台登录增加图形验证码
## 状态
已采纳。
## 决策
后台登录沿用 RuoYi 的交互模式:登录页先获取图形验证码,提交账号、密码、验证码 ID 和验证码内容;验证码错误、过期或重复使用时,前端重新获取验证码。
WonderQ 使用 `GET /api/admin/auth/captcha`,返回验证码 ID、短时 SVG 图片 data URL 和有效秒数。验证码答案不进入响应、不写日志,只以哈希形式保存到 Redis,并在校验时单次消费。验证码接口、登录限流和管理员会话都依赖 Redis;Redis 不可用时返回 `503`,不降级绕过安全校验。
## 原因
- 保留 RuoYi 用户熟悉的登录防护和刷新交互。
- 不新增 Pillow 等图片依赖,使用后端生成的受控 SVG,减少 Docker 镜像和部署复杂度。
- 让验证码与现有 Redis 会话、登录限流处于同一安全边界。
## 影响范围
- `WonderQ-Admin` 新增验证码接口、Redis 单次消费存储和登录请求字段。
- `WonderQ-Admin-UI-Vue` 登录页新增验证码图片、刷新和失败重试。
- `WonderQ-MiniAPP` 不使用后台登录,不需要改动。
- 现有 `token/accessToken/user` 登录响应和 Refresh Token Cookie 保持兼容。