关闭工作流 SpEL 命令执行与社团活动 SQL 注入,补齐越权、调试接口、登录喷洒和异常回显等问题;学生密码改为随机临时密码,Web/移动端支持复制。 Constraint: 流程发起/办理接口保持仅登录校验,避免影响请假审批 Rejected: 开启验证码 | Web/移动端登录页均未实现,开启会导致无法登录 Confidence: high Scope-risk: broad Not-tested: 生产环境与社团社长/指导老师视角 Co-authored-by: Cursor <cursoragent@cursor.com>
4.9 KiB
4.9 KiB
学生密码重置 API 接口文档
模块概述
模块名称:Student Password Reset / 学生密码重置
基础路径:/studentMsg/studentMsg
版本:v1.0
负责人:学工模块
更新时间:2026-10-26
模块功能
学工老师按学号查询学生基本信息后,一键将对应学生登录账号密码重置为服务端随机生成的临时密码(2026-10-26 安全整改:取消固定默认密码)。
不复用 system:user:resetPwd,避免把系统用户管理权下放给学工老师。
核心约束:
- 仅允许重置
sys_user.account_type = '2'(学生账号) - 要求
user_id = xg_student_msg.id,且user_name与学号一致(若有用户名) - 临时密码由服务端 SecureRandom 生成(10 位,含大小写、数字、特殊字符),前端不可传入自定义密码
- 数据范围:超管、校级账号(无学院)可操作全部学生;学院账号只能查询/重置本学院(或一年级代理学院)的学生
- 重置后立即踢下线该学生的所有在线会话
- 操作日志不记录响应体,临时密码不落库日志
临时密码:仅在本次接口响应 data 中返回一次,由老师当面告知学生,学生登录后应自行修改。
权限说明
| 权限标识 | 说明 |
|---|---|
studentMsg:studentPwdReset:list |
Web 菜单页可见 |
studentMsg:studentPwdReset:query |
按学号查询 |
studentMsg:studentPwdReset:reset |
确认重置密码 |
student:pwdreset:listapp |
移动端首页入口可见 |
菜单脚本:backend/script/sql/update/update_20261026_student_pwd_reset_menu.sql
接口概览
| 接口名称 | HTTP 方法 | 路径 | 权限要求 | 功能描述 |
|---|---|---|---|---|
| 按学号查询学生 | GET | /studentMsg/studentMsg/queryByStudentNo/{studentNo} |
studentMsg:studentPwdReset:query |
返回姓名、学号、班级、班主任 |
| 重置学生密码 | PUT | /studentMsg/studentMsg/resetStudentPassword/{studentNo} |
studentMsg:studentPwdReset:reset |
重置为随机临时密码 |
详细接口说明
1. 按学号查询学生(重置密码页)
- 接口路径:
GET /studentMsg/studentMsg/queryByStudentNo/{studentNo} - 权限标识:
studentMsg:studentPwdReset:query - 功能描述:按学号查询学生档案,用于重置前确认身份;班主任姓名优先取学生档案,为空时回退班级表
路径参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| studentNo | string | 是 | 学号 |
成功响应
{
"code": 200,
"msg": "操作成功",
"data": {
"id": 1234567890123456789,
"studentNo": "202513063048",
"name": "张三",
"className": "计应2401",
"classTeacherName": "李老师"
}
}
错误场景
| 场景 | 提示 |
|---|---|
| 学号为空 | 学号不能为空 |
| 学号不存在 | 未找到学号对应的学生信息 |
| 无权限 | 403 |
2. 重置学生密码
- 接口路径:
PUT /studentMsg/studentMsg/resetStudentPassword/{studentNo} - 权限标识:
studentMsg:studentPwdReset:reset - 功能描述:将学号对应学生登录密码重置为随机临时密码并踢下线;写操作日志「重置学生密码」(不记录响应)
- 防重复提交:
@RepeatSubmit
路径参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| studentNo | string | 是 | 学号 |
请求体
无。临时密码由服务端随机生成并 BCrypt 后写入,不允许客户端传密。
成功响应
{
"code": 200,
"msg": "操作成功",
"data": "Abcdef@123"
}
错误场景
| 场景 | 提示 |
|---|---|
| 学号不存在 | 未找到学号对应的学生信息 |
| 无登录账号 | 该学生没有登录账号,无法重置密码 |
| 非学生账号 | 该账号不是学生账号,禁止重置 |
| 学号与登录名不一致 | 学号与登录账号不一致,请联系管理员 |
| 非本学院学生 | 只能操作本学院的学生 |
| 无权限 | 403 |
前端与移动端
| 端 | 路径 / 入口 |
|---|---|
| Web | web/src/views/xg/xsjcxx/studentMsg/studentPwdReset/index.vue |
| Web API | web/src/api/xg/xsjcxx/studentMsg/studentMsg/index.ts → queryStudentForPwdReset / resetStudentPassword |
| 移动端页面 | mobile/src/pages/xg/xsjcxx/studentPwdReset/index.vue |
| 移动端 API | mobile/src/api/studentPwdReset.js |
| 移动端首页 | 学工管理 →「重置学生密码」(student:pwdreset:listapp) |
验收要点
- 有权限账号:学号查得到 → 重置成功 → 该学号可用默认密码登录
- 无权限账号:接口 403
- 不存在学号 / 无用户 / 非学生账号:友好错误,不改密
- Web、移动端流程一致:输入学号 → 查询 → 确认 → 重置