3.7 KiB
3.7 KiB
修改密码功能设计
1. 概述
为碳信网平台添加普通用户自助修改密码功能,采用前后端分离架构。
- 普通用户修改密码:位于
txw-mhzc(用户中心),入口在个人中心左侧菜单 - 管理员重置密码:已存在于
txw-yygl,无需改动
2. 后端接口
2.1 新增接口
POST /sso/auth/changePassword
请求体:
{
"oldPassword": "MD5加密字符串",
"newPassword": "MD5加密字符串",
"confirmPassword": "MD5加密字符串"
}
响应(统一 CommonResult):
{
"code": 1,
"data": null,
"msg": "密码修改成功"
}
2.2 密码复杂度规则
中等级别:
- 长度:6-20 位
- 必须包含:字母 + 数字
2.3 校验流程
- 格式校验:新密码长度6-20位,需同时包含字母和数字
- 一致性校验:newPassword === confirmPassword
- 身份校验:authenticate(username, oldPassword) 验证旧密码正确性
- 防重名校验:newPassword !== oldPassword
2.4 错误码
| 场景 | msg |
|---|---|
| 密码格式不符 | 密码长度6-20位,需包含字母和数字 |
| 两次密码不一致 | 两次输入的新密码不一致 |
| 旧密码错误 | 原密码输入错误 |
| 新旧密码相同 | 新密码不能与原密码相同 |
2.5 涉及文件
| 文件 | 改动 |
|---|---|
AuthService.java |
新增 changePassword 接口声明 |
AuthServiceImpl.java |
实现 changePassword 逻辑 |
AuthController.java |
新增 /auth/changePassword 路由 |
AuthLoginReqVO.java |
建议复用或新建 ChangePasswordReqVO |
3. 前端页面(txw-mhzc-web)
3.1 路由
| 路由路径 | 组件 | 菜单标题 |
|---|---|---|
/yhzx/zhanghugl |
ChangePassword.vue |
账号管理 |
3.2 工作台入口
在 txw-mhzc-web/src/pages/index/views/gzt/index.vue 新增快捷操作按钮"修改密码",点击跳转 /yhzx/zhanghugl。
3.3 用户中心左侧菜单
在 yhzx 路由的 children 中新增:
{ path: 'zhanghugl', component: zhanghugl, name: 'zhanghugl', meta: { title: '账号管理' } }
3.4 修改密码页面 ChangePassword.vue
页面元素:
- 旧密码输入框(密码类型)
- 新密码输入框(密码类型)
- 确认密码输入框(密码类型)
- 确认按钮
交互逻辑:
- 输入框下方实时显示密码格式提示
- 提交前统一校验
- 成功后给出提示并可跳转其他页面
- 失败回显错误信息
3.5 API 调用
// txw-mhzc-web/src/pages/index/api/sso.js
export const changePassword = (params) => {
return fetchSso({
url: '/sso/auth/changePassword',
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
3.6 涉及文件
| 文件 | 改动 |
|---|---|
router/routes.js |
新增 zhanghugl 路由 |
views/gzt/index.vue |
新增修改密码快捷入口 |
views/yhzx/zhanghugl/index.vue |
新建修改密码页面 |
api/sso.js |
新建,封装 changePassword API |
4. yygl 管理员重置密码(已有,无需改动)
| 文件 | 说明 |
|---|---|
txw-yygl-web/.../yhgl/index.vue |
"重置密码"按钮,调用 resetPassword(yhUuid) |
txw-yygl-web/.../api/htgl.js |
resetPassword 接口已实现 |
txw-mhzc/.../UserController.java |
resetPassword 接口已实现,重置为配置默认密码 |
5. 数据库字段
用户表 dlmm 字段存储 MD5 加密后的密码。
6. 备注
- 旧密码传输前已在前端做 MD5 加密(与现有登录流程一致)
- 新密码传输前在前端做 MD5 加密
- 此设计与现有
authenticate的isPasswordMatch逻辑保持一致