11修改密码功能的开发

Views: 0

逻辑

前端操作:

用户在前端页面输入: 原密码(证明是你本人) 新密码(想改成啥) 确认新密码(防止输错)

后台验证:

系统会先检查: 原密码对不对(不对就报错:”账号或密码错误”)

新密码和确认密码是否一致(不一致就报错:”确认新密码错误”)

如果都正确: 把新密码存到数据库 自动退出登录(让你重新用新密码登录)

安全设计:

改密码必须知道原密码(防止别人乱改)

改完强制重新登录(确保新密码立即生效)

所有角色(管理员/老师/学生)改密码流程都一样

添加接口分支

WebController.java

/**
 * 修改密码
 */
@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

public void updatePassword(Account account) {
        // ToDo 修改密码逻辑处理   先检查用户是否存在,再修改密码
        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());
        //调用mapper层的方法,返回结果
        teacherMapper.updateById(dbTeacher);
    }

StudentService.java

public void updatePassword(Account account) {
    // ToDo 修改密码逻辑处理
    // 检查用户是否存在
    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);
}
版权声明

本网站名称:学海拾茜
本文链接:https://www.61lyf.top/1958-2/
本网站的文章部分内容可能来源于网络,仅供学习与参考,如有侵权,请联系站长进行核实删除。
转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处并附带原文链接!!!
站长邮箱:cyg1900@outlook.com 或studygod825@qq.com ,如不方便留言可邮件联系。
暂无评论

发送评论 编辑评论


				
上一篇
下一篇