From 24a8643fb69c4e10ce560792649468df0b979489 Mon Sep 17 00:00:00 2001 From: pigeon Date: Sat, 6 Jun 2026 11:25:47 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=E5=90=8E=E7=AB=AF=20?= =?UTF-8?q?API=20=E5=B7=A5=E5=8D=95=20-=20=E7=94=A8=E6=88=B7=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=8E=A5=E5=8F=A3=E5=AF=86=E7=A0=81=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=A4=84=E7=90=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-request-user-password.md | 68 ++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 api-request-user-password.md diff --git a/api-request-user-password.md b/api-request-user-password.md new file mode 100644 index 0000000..9ec154a --- /dev/null +++ b/api-request-user-password.md @@ -0,0 +1,68 @@ +# [API-REQ] 用户编辑接口密码字段处理优化 + +## 接口地址 + +PUT /user/admin/user + +## 功能描述 + +当前编辑用户时,如果前端不传 `password` 字段或传空字符串,后端会报错或把密码更新为空。期望后端能处理以下逻辑: + +## 请求参数 + +```json +{ + "id": 1, + "username": "admin", + "userType": 1, + "status": 1 + // 注意:没有 password 字段 +} +``` + +## 期望行为 + +1. **编辑用户时**,如果请求体中**不包含** `password` 字段,或 `password` 为 **null/空字符串**,应**不修改**用户密码 +2. **编辑用户时**,如果请求体中**包含** `password` 字段且**不为空**,应**更新**用户密码 +3. **新增用户时**,`password` 字段**必填**,保持现有逻辑 + +## 当前问题 + +- 编辑用户时如果不传密码,后端可能报错或把密码置空 +- 前端需要在编辑时特殊处理密码字段(已临时处理:编辑时密码为空则不提交该字段) + +## 前端使用场景 + +编辑用户弹框中,密码输入框提示"留空表示不修改密码"。用户留空时,前端不提交 password 字段,期望后端保持原密码不变。 + +## 优先级 + +高 - 影响用户编辑功能正常使用 + +## 相关代码 + +前端文件:`admin-ui/src/views/user/info/UserFormDialog.vue` + +```typescript +// 编辑时如果密码为空,删除该字段,避免后端修改密码 +if (isEdit && !data.password) { + delete data.password +} +``` + +## 建议实现 + +在 `UserService.update()` 或 Controller 层添加判断: + +```java +if (userDTO.getPassword() != null && !userDTO.getPassword().isEmpty()) { + // 更新密码 + user.setPassword(encrypt(userDTO.getPassword())); +} +// 否则不修改密码字段 +``` + +--- + +> 提交者:前端开发(admin-ui) +> 日期:2026-06-06