当前位置: 首页 > article >正文

更新用户密码功能

总说

过程参考黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili

又是写了一半开始懒散不想写了,9天没写了。

博客仅记录过程,可能解释不详细,因为我也有点一知半解。只能说一边学习一边补充

目录

总说

一、功能实现

1.1 Controller层

1.2 Service层

1.3 Impl层

1.4 Mapper层

1.5 测试接口

二、优化

2.1

2.2


一、功能实现

本次实现更新密码功能

流程比较常规

需要输入旧密码oldPwd、新密码newPwd、重复新密码rePwd

1.1 Controller层

来到UserController

检验三个参数是否为空

检验新密码和确认密码是否一致

然后实现更新

代码如下:

//更新密码
    @PatchMapping("/updatePwd")
    public Result updatePwd(@RequestBody Map<String, String> params){
        //1、校验参数
        String oldPwd = params.get("oldPwd");
        String newPwd = params.get("newPwd");
        String rePwd = params.get("rePwd");

        if (!StringUtils.hasLength(oldPwd) || !StringUtils.hasLength(newPwd) || !StringUtils.hasLength(rePwd)) {
            return Result.error("缺少必要参数");
        }

        //2、检验密码是否正确
        Map<String, Object> map = ThreadLocalUtil.get();
        String username = (String) map.get("username");// 在线程中获取用户名username

        User user = userService.findByUserName(username); //根据用户名查询用户
        if(!user.getPassword().equals(Md5Util.getMD5String(oldPwd))) {
            return Result.error("原密码不正确");
        }

        //2次填写密码是否一致
        if(!rePwd.equals(newPwd)) {
            return Result.error("两次密码不一致");
        }

        //3、调用service完成密码更新
        userService.updatePwd(newPwd);
        return Result.success();
    }

1.2 Service层

来到UserService,代码如下:

//更新用户密码
void updatePwd(String newPwd);

1.3 Impl层

来到UserServiceImpl中,添加代码如下:

@Override
    public void updatePwd(String newPwd) {
        //从ThreadLocal中获取用户id
        Map<String, Object> map = ThreadLocalUtil.get();
        Integer id = (Integer) map.get("id");
        userMapper.updatePwd(Md5Util.getMD5String(newPwd));// 传入加密后的新密码
    }

1.4 Mapper层

来到UserMapper

添加代码如下:

//根据id更新更新用户密码
@Update("update user set password=#{md5String},update_time=now() where id=#{id}")
void updatePwd(String md5String, Integer id);

1.5 测试接口

写一个新的接口如下:

old_pwd注意看你的数据库中的原密码

成功修改

这里一直给我说9090端口被占用,我这里在aqqlication.yml把端口号改成9091了

之后修好后会改回9090的

破案了,挂的梯子占用9090端口了,我真的服了


http://www.kler.cn/a/504884.html

相关文章:

  • PHP 字符串
  • nexus搭建maven私服
  • 道旅科技借助云消息队列 Kafka 版加速旅游大数据创新发展
  • 【C语言】字符串函数详解
  • E12.【C语言】练习:求两个数的最大公约数
  • docker mysql5.7如何设置不区分大小写
  • 解决nginx: [emerg] unknown directive “stream“ in /etc/nginx/nginx.conf问题 --九五小庞
  • LeetCode | 解锁数组与字符串的秘密:经典题型详解与高效解法
  • 20250113面试鸭特训营第21天
  • STLG_01_12_程序设计C语言 - 联合体和枚举类型
  • 【AIGC-ChatGPT进阶提示词指令】智慧母婴:打造基于成长树的儿童发展引导系统
  • 【网络云SRE运维开发】2025第3周-每日【2025/01/14】小测-【第13章ospf路由协议】理论和实操解析
  • PPPLib源码阅读
  • 「蓝桥杯题解」数字接龙
  • 石化煤矿智能化转型“硬通货”,遨游防爆手机如何面面俱到?
  • Vue2+OpenLayers实现车辆开始、暂停、重置行驶轨迹动画(提供Gitee源码)
  • UART 串口的全双工模式与 SPI 的全双工模式的区别
  • 达梦数据库数据迁移(mysql迁移到达梦)
  • 4种革新性AI Agent工作流设计模式全解析
  • 力扣cf补题-1【算法学习day.94】
  • 字符串提取数字求和⭐
  • Spring Boot 应用开发中的核心注解及扩展(包含自动配置源码追踪)
  • 2025.1.15——二、字符型注入
  • STM32 物联网智能家居 (三) 输入子系统
  • 语言月赛 202407【significance】题解(AC)
  • Web_HTML+CSS_First_Asignment