逻辑
前端操作:
用户在前端页面输入:
原密码(证明是你本人)
新密码(想改成啥)
确认新密码(防止输错)
后台验证:
系统会先检查:
原密码对不对(不对就报错:”账号或密码错误”)
新密码和确认密码是否一致(不一致就报错:”确认新密码错误”)
如果都正确:
把新密码存到数据库
自动退出登录(让你重新用新密码登录)

安全设计:
改密码必须知道原密码(防止别人乱改)
改完强制重新登录(确保新密码立即生效)
所有角色(管理员/老师/学生)改密码流程都一样
添加接口分支
WebController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
@PutMapping("/updatePassword") public Result updatePassword(@RequestBody Account account) { if ("ADMIN".equals(account.getRole())) { adminService.updatePassword(account); } if ("TEACHER".equals(account.getRole())) { teacherService.updatePassword(account); } if (("STUDENT".equals(account.getRole()))) { studentService.updatePassword(account); } return Result.success(); }
|
TeacherService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public void updatePassword(Account account) { Teacher dbTeacher = teacherMapper.selectByUsername(account.getUsername()); if (ObjectUtil.isNull(dbTeacher)) { throw new CustomException("用户不存在"); } if (!account.getPassword().equals(dbTeacher.getPassword())) { throw new CustomException("账号或密码错误"); } dbTeacher.setPassword(account.getNewPassword()); teacherMapper.updateById(dbTeacher); }
|
StudentService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public void updatePassword(Account account) { Student dbStudent = studentMapper.selectByUsername(account.getUsername()); if (ObjectUtil.isNull(dbStudent)) { throw new CustomException("用户不存在"); } if (!account.getPassword().equals(dbStudent.getPassword())) { throw new CustomException("账号或密码错误"); } dbStudent.setPassword(account.getNewPassword()); studentMapper.updateById(dbStudent); }
|