feat: 添加后台登录验证码、记住密码功能,优化媒体资源与前端规范
- 新增后台登录图形验证码功能,完善登录安全防护 - 新增登录rememberMe参数,控制Refresh Token的会话持久化策略 - 实现OSS私有桶媒体URL自动签名,统一处理图片资源的临时访问签名 - 新增素材库数据库表与上传API,规范媒体资源管理流程 - 统一前端UI图标使用@element-plus/icons-vue,重构布局图标组件 - 登录页新增验证码输入、刷新功能,添加账号记忆与记住密码逻辑 - 更新全套文档,补充API契约、技术决策记录与集成流程说明 - 修复多个业务页面的图标展示问题,新增认证流程相关测试用例
This commit is contained in:
24
docs/decisions/0001-admin-login-captcha.md
Normal file
24
docs/decisions/0001-admin-login-captcha.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# 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 保持兼容。
|
||||
23
docs/decisions/0002-admin-remember-me.md
Normal file
23
docs/decisions/0002-admin-remember-me.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# 0002 后台登录记住登录状态
|
||||
|
||||
## 状态
|
||||
|
||||
已采纳。
|
||||
|
||||
## 决策
|
||||
|
||||
登录页提供 RuoYi 风格的“记住密码”勾选项,但 WonderQ 不保存明文密码。`rememberMe` 作为登录请求字段传给后端:勾选时 Refresh Token Cookie 使用现有 7 天持久化策略;未勾选时使用会话级 HttpOnly Cookie。Redis 会话记录保存该状态,Refresh Token 轮换时继承原状态。
|
||||
|
||||
Vue 管理端只在勾选后保存账号和勾选偏好,用于下次填充账号;密码交由浏览器密码管理器处理,不能写入 localStorage、Cookie 或业务 API。
|
||||
|
||||
## 原因
|
||||
|
||||
- 保留 RuoYi 用户熟悉的登录体验。
|
||||
- 避免为了“记住密码”在前端持久化可复用的密码凭据。
|
||||
- 让“记住登录状态”与现有 HttpOnly Refresh Token 会话模型一致。
|
||||
|
||||
## 影响范围
|
||||
|
||||
- `WonderQ-Admin` 的登录请求增加可选 `rememberMe`,Redis 会话记录兼容旧记录,旧记录默认按未勾选处理。
|
||||
- `WonderQ-Admin-UI-Vue` 增加复选框和账号记忆逻辑。
|
||||
- `WonderQ-MiniAPP` 不使用后台登录,不需要改动。
|
||||
Reference in New Issue
Block a user