# 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 保持兼容。