# 当前登录账号修改密码接口说明 ## 功能说明 - 适用范围:任意端口账号登录后修改当前登录账号自己的密码 - 安全限制:只能修改当前登录态对应账号的密码,不能修改其他账号或其他端口账号的密码 - 推荐接口:`PUT /system/user/profile/updatePwd` - 兼容接口:`PUT /system/user/profile/updateSubPwd` ## 规则说明 - 超级管理员修改的是 `sys_user.password` - 普通端口账号修改的是当前登录端口记录 `sys_user_login_port.sub_password` - 后端会从当前登录 token 中自动识别当前账号 - 前端不需要传目标账号 ID - 如果传了 `portId`,且与当前登录端口不一致,后端会直接返回失败:`只能修改当前登录账号密码` ## 1. 推荐接口 - 路径:`PUT /system/user/profile/updatePwd` - 说明:当前登录用户修改自己的密码 ### 请求头 | 请求头 | 是否必填 | 说明 | | --- | --- | --- | | `Authorization` | 是 | 登录 token | | `isEncrypt` | 是 | 传 `true`,与现有加密请求保持一致 | | `repeatSubmit` | 否 | 可传 `false` | | `Content-Type` | 是 | `application/json` | ### 请求参数 | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `oldPassword` | String | 是 | 旧密码 | | `newPassword` | String | 是 | 新密码 | | `portId` | Long | 否 | 非必填;建议不要传,若传入的不是当前登录端口 ID 会被拒绝 | ### 请求示例 ```json { "oldPassword": "123456", "newPassword": "NewPwd@2026" } ``` ### 返回成功示例 ```json { "code": 200, "msg": "操作成功", "data": null } ``` ### 常见失败响应 | 提示 | 说明 | | --- | --- | | `修改密码失败,旧密码错误` | 旧密码校验失败 | | `新密码不能与旧密码相同` | 新旧密码一致 | | `只能修改当前登录账号密码` | 试图修改非当前登录端口账号密码 | | `当前登录账号未绑定端口,无法修改密码` | 当前登录态无端口信息 | | `当前登录账号不存在或无权修改` | 当前登录端口记录不存在或不属于当前用户 | | `修改密码异常,请联系管理员` | 数据更新失败 | ## 2. 兼容接口 - 路径:`PUT /system/user/profile/updateSubPwd` - 说明:为兼容历史前端保留,实际安全限制与推荐接口一致,也只能修改当前登录账号密码 ### 请求方式 - `body` 仍传: ```json { "oldPassword": "123456", "newPassword": "NewPwd@2026" } ``` - 历史前端若在 query 中传 `portId`,只有在它等于当前登录端口 ID 时才允许通过 ## 3. 前端调用示例 ### Web 端 ```ts request({ url: '/system/user/profile/updatePwd', method: 'put', headers: { isEncrypt: true, repeatSubmit: false }, data: { oldPassword, newPassword } }) ``` ### uni-app / 移动端 ```js request({ url: '/system/user/profile/updatePwd', method: 'put', header: { isEncrypt: true }, data: { oldPassword, newPassword } }) ``` ## 4. 对接建议 - 新接入前端统一调用 `PUT /system/user/profile/updatePwd` - 不要让前端选择目标账号,也不要透传其他账号或其他端口的 `portId` - 修改成功后,建议前端提示用户重新使用新密码登录