feat(passport): 支持多租户登录及密码找回功能

- 新增重置密码接口及参数支持手机号/邮箱找回
- 登录接口支持多租户场景,返回多租户选项供前端选择
- 增加登录状态持久化保存租户和用户信息
- 登录界面新增“忘记密码”链接并实现密码找回页
- 忘记密码页支持邮箱和手机两种找回方式,首3次发送验证码免图形验证码校验
- 登录页短信验证码发送优化,增加发送次数限制和图形验证码弹窗
- 请求拦截器支持跳过租户头注入,适配登录前找回等场景
- 路由表启用忘记密码页面路由
- 国际化新增密码找
This commit is contained in:
2026-07-24 23:07:06 +08:00
parent 1823cbf0b0
commit ad76abea96
11 changed files with 1026 additions and 57 deletions

View File

@@ -0,0 +1,22 @@
# 2026-07-24 工作记录
## 从 guilixu-admin 复制登录模块到 mp-vue
mp-vue 是 Vue3 + Ant Design Vue + ele-admin-pro 模板项目,其登录模块是 guilixu-admin 改造前的旧版。本次把 guilixu-admin 已验证的登录增强功能完整移植过来。
### 新增/修改文件
- `src/views/passport/forget/index.vue`(新建):忘记密码页,邮箱/手机两种找回前3次免图形验证码密码强度校验调用 resetPassword。
- `src/api/passport/login/model/index.ts`:新增 `TenantOption``LoginOutcome``LoginResult` 增加 `tenants?``LoginParam` 增加 `smsCode?`
- `src/api/passport/login/index.ts`:新增 `saveLoginState``loginBySelectTenant``sendSmsCaptchaByAdmin``sendEmailCaptcha``loginBySuperAdminSms` 改为返回 `LoginOutcome`(多租户 selectTenant / 单租户 ok
- `src/utils/request.ts`:请求拦截器支持 `X-Tenant-Skip`(适配 axios 0.27 的 `config.headers.common` 风格),登录前找回场景跳过租户头注入避免串租户。
- `src/api/layout/index.ts` + `model/index.ts`:新增 `resetPassword`POST /resetPassword带 X-Tenant-Skip 头)与 `ResetPasswordParam`
- `src/views/passport/login/index.vue`发送验证码前3次免图形验证handleSendCodeonLoginBySms 处理 LoginOutcome 多租户选择;新增选择租户弹窗;账号登录增加"忘记密码"链接跳 /forget。
- `src/router/routes.ts`:启用 /forget 路由。
- `src/i18n/lang/zh_CN/login.ts` / `en/login.ts`:新增 forgetPage 命名空间。
### 验证
- `vue-tsc`:本次改动文件无类型错误(项目本身存在大量与本次无关的 JSX 解析历史错误)。
- `vite build --outDir dist-verify-mp`编译打包成功forget 页 chunk 已生成,无 error/fail。临时产物已移至 /tmp。
### 注意点
- mp-vue 用 axios 0.27.2request 拦截器头写法与 guilixu-adminaxios 1.x不同`config.headers.common[...]`X-Tenant-Skip 判断同时兼容 `config.headers['X-Tenant-Skip']``config.headers.common['X-Tenant-Skip']`
- 后端接口 /sendEmailCaptcha、/sendSmsCaptchaByAdmin、/resetPassword、/loginBySelectTenant 需 guilixu-java 已实现(与 website-admin 同源 server.websoft.top通常已具备