用户修改密码

用户-修改密码-持久层

1.1 规划需要执行的SQL语句

用户修改密码时需要执行的SQL语句大致是:

update t_user set  password =?,modified_user=?,modified_time=? where uid=?

在执行修改密码之前,还应检查用户数据是否存在、并检查用户数据是否被标记为“已删除”、并检查原密码是否正确,这些检查都可以通过查询用户数据来辅助完成:

SELECT * FROM t_user WHERE uid=?

1.2 接口与抽象方法

在UserMapper接口添加updatePasswordByUid(Integer uid,String password,String
modifiedUser,Date modifiedTime)抽象方法。

 /*** 根据id修改用户密码* @param uid     用户id* @param password  新密码* @param modifiedUser  修改的执行者* @param modifiedTime    修改时间* @return        返回值受影响的行数*/Integer  updatePasswordByUid(@Param("uid") Integer uid,@Param("password") String password,@Param("modifiedUser") String modifiedUser,@Param("modifiedTime") Date modifiedTime);/*** * 根据用户id查询用户的数据* @param uid      用户id* @return    如果找到则返回对象,反之返回null*/User findByUid(Integer uid);

1.3 配置SQL映射

在UserMapper.xml中配置updatePasswordByUid()、findByUid()抽象方法的映射。

 <update id="updatePasswordByUid">update store.t_user set  password =#{password},modified_user=#{modified_user},modified_time=#{modified_time} where uid=${uid}</update><select id="findByUid" resultMap="UserEntityMap">SELECT * FROM store.t_user WHERE uid=#{uid}</select>

1.3 单元测试

@Testpublic void  updatePasswordByUid() {usermapper.updatePasswordByUid(9, "31","管理员", new Date());
}@Testpublic void findByUid(){System.out.println(usermapper.findByUid(9));}

用户-修改密码-业务层

1 、规划异常

1.1 原密码错误,is_delete == 1,uid找不到
1.2 updata更新时可能会产生异常
创建com.cy.store.service.ex.UpdateException异常类,继承自ServiceException类。

package com.cy.store.service.ex;
//用户在更新数据时产生的未知 的异常
public class UpdateException extends ServiceException{public UpdateException() {super();}public UpdateException(String message) {super(message);}public UpdateException(String message, Throwable cause) {super(message, cause);}public UpdateException(Throwable cause) {super(cause);}protected UpdateException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);}
}

2、 接口与抽象方法

在IUserService中添加changePassword(Integer uid, String username, String oldPassword, String newPassword)抽象方法

    void changePassword(Integer uid, String username, String oldPassword, String newPassword);

3、实现抽象方法

1.在UserServiceImpl类中实现changePassword()抽象方法。

 @Overridepublic void changePassword(Integer uid, String username, String oldPassword, String newPassword) {User result = usermapper.findByUid(uid);if (result == null || result.getIsDelete() == 1){throw new UserNotFoundException("用户数据不存在");}//原始密码和数据库的密码进行比较String oldMd5Password = getMD5Password(oldPassword, result.getSalt());if (!result.getPassword().equals(oldMd5Password)){throw new PasswordNotMatchException("密码错误");}//将新密码设置到数据库,先加密再更新String newMd5Passwprd = getMD5Password(newPassword, result.getSalt());Integer rows = usermapper.updatePasswordByUid(uid, newMd5Passwprd, username, new Date());if (rows!=1){throw new UpdateException("更新数据时产生未知异常");}}

4、在UserServiceTests中编写并执行单元测试。

 @Testpublic void changePassword(){userService.changePassword(8,"杨波","123", "321");}

用户-修改密码-控制层

1、处理异常

在用户修改密码的业务中抛出了新的UpdateException异常,需要在BaseController类中进行处理。

else if(e instanceof UpdateException) {result.setState(5001);result.setMessage("更新数据时产生未知的异常");}

2、设计请求

在这里插入图片描述

3、处理请求

 @RequestMapping("change_password")public JsonResult<Void> changePassword(String oldPassword,String newPassword, HttpSession session){Integer uid = getuidFromSession(session);String username = getUsernameFromSession(session);userService.changePassword(uid,username,oldPassword,newPassword);return new JsonResult<>(ok);}

用户-修改密码-前端页面

ajax

<script type="text/javascript">$("#btn-change-password").click(function () {$.ajax({url:"/users/change_password",type:"POST",data:$("#form-change-password").serialize(),dataType:"json",success:function (json) {if (json.state == 200){alert("密码修改成功")//跳转到系统主页index.html//相对路径来确定跳转的页面location.href="index.html";}else alert("密码修改失败");},error:function (xhr) {alert("密码修改时产生未知异常"+xhr.message);}});});</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17451.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL修改用户密码

初始化数据库之后默认的密码为空&#xff0c;此时可以直接登录数据库&#xff0c;但这样很不安全&#xff0c;需要设置密码。 命令行进入数据库 psql -d postgres -U xxx 执行命令修改密码 ALTER USER 用户名 WITH PASSWORD xxx; 退出 \q 修改配置文件 进入数据库目录&…

修改密码的操作

首先我们要写一个button标签&#xff0c;通过鼠标点击这个button标签来触发修改密码的模态框。 修改密码的模态框的具体代码如下图所示&#xff1a; 展示模态框在页面的效果&#xff1a; 接下来到了JavaScript部分的代码。 下面的代码是在你使用鼠标点击button标签时执行下面的…

修改linux系统postgres用户的密码

1. 修改linux系统postgres用户的密码 PostgreSQL会创建一个默认的linux用户postgres&#xff0c;修改该用户密码的方法如下&#xff1a; 步骤一&#xff1a;删除用户postgres的密码 sudo passwd -d postgre 步骤二&#xff1a;设置用户postgres的密码 sudo -u postgres pass…

chatgpt赋能python:Python重置密码:让您的账户更加安全

Python重置密码&#xff1a;让您的账户更加安全 简介 随着互联网的发展&#xff0c;我们越来越多地使用各种不同的网站和应用程序来存储个人数据和敏感信息。随之而来的风险是&#xff0c;如果黑客获得了您的密码&#xff0c;他们可以轻松地访问您的个人资料和敏感信息。因此…

chatgpt赋能python:Python修改密码:一种安全可靠、快速高效的方式

Python 修改密码&#xff1a;一种安全可靠、快速高效的方式 在数字化时代&#xff0c;越来越多的信息被存储在计算机系统中&#xff0c;因此密码的保护变得尤为重要。人们需要保证他们的密码是安全可靠的&#xff0c;并定期更换密码。Python作为一种强大而且通用的编程语言&am…

刚刚发现微信最新骗局,切勿点开链接!

刚刚笔者手机收到一条微信消息&#xff0c;打开一看&#xff0c;说我没有进行第二次实名认证&#xff0c;我也很纳闷&#xff0c;还有第二次认证的说法&#xff1f;看到头像和名字&#xff0c;完全可以以假乱真 就在我点开链接之后&#xff0c;也确实是实名认证界面&#xff0…

揭秘骗局微投app

发个防止被骗的博文真难。服了&#xff0c;请用心看我是不是在推广。。我服了 揭秘骗局&#xff1a;微信加你拉近群里做任务&#xff0c;日赚200&#xff0c;刚开始关注微信号返钱后续微投老师带做任务&#xff01; 我不知道有些人为什么会相信这玩意&#xff01;&#xff01;…

量化交易是不是骗局

量化只是一个工具,欺骗的是人性。厚道的人自然不会去做忽悠的事情,为了金钱厚颜无耻之人,欺骗存在与方方面面 股指IF解析 以下均为模拟数据 股指IF204合约行情解析 回顾股指IF今天的走势,整体来看是一个震荡上行的收缩三角形。开盘价就在今天的最低点5030点附近,下午最…

EAST的EPTC骗局

EAST的EPTC骗局 本人工薪阶层一枚&#xff0c;近来想投资赚点零花钱&#xff0c;但出师不利&#xff0c;一开始就遇到了骗子&#xff0c;瞬间就赔光了自己所有的私房钱&#xff08;1.4w&#xff09;&#xff0c;虽说数目不大&#xff0c;但想想也有点不甘心。希望看到这篇的朋…

警惕, 差点着了副业骗局的道

最近行业不景气, 大家都很焦虑, 尤其是IT行业搬砖的, 每天战战兢兢, 就怕HR突然的关心. 码哥人到中年也是来了焦虑感了, 就想着搞点副业缓解下, 就算挣不了大钱, 至少也能有个经验不是. 刚好, 关注的大佬的公众号突然推荐了一款副业APP, 一看还是东哥家的, 公众号大佬 东哥背…

华为鸿蒙爆出惊天骗局,华为鸿蒙系统爆出惊天骗局!

来源&#xff1a;https://new.qq.com/omn/20190629/20190629A0PJAZ.html?pc 近期&#xff0c;一个名为「鸿蒙系统信息发布平台」的网站发布消息称&#xff0c;鸿蒙系统预计2019年底正式发布。 我们也去这个网站逛了一下街 从介绍来看&#xff0c;华为鸿蒙系统 「打通手机、电…

2022年「预训练」优秀论文盘点

No.69 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 《预训练周刊》已经开启“订阅功能”&#xff0c;扫描下面二维码&#xff0c;进入《预训练周刊》主页&#xff0c;选择“关注TA”&#xff0c;即可收到推送消息。 关于周刊 本期周刊&#xff0c;我们对2022年的…

GPT-4问世,让AGI统治地球!(附技术报告解析)

来自&#xff1a;高能AI 进NLP群—>加入NLP交流群 老铁们&#xff0c;好久不见&#xff0c;我是JayJay。 就在刚刚&#xff0c;北京时间3月15日凌晨&#xff0c;GPT-4问世。 现在&#xff0c;ChatGPT-Plus已经可以访问GPT-4&#xff1a; GPT-4是OpenAI在深度学习领域深耕的最…

大模型“搅局”,数据湖,数据仓库,湖仓选型会先淘汰谁?

事情总是这样&#xff1a; 压力初露端倪&#xff0c;暗自考虑改变。 压力高能爆表&#xff0c;立马做出改变。 我们从一家叫做Databricks的美国知名公司聊起。 这家Databricks公司很有创新基因。 其创始人阿里戈西&#xff08;Ali Ghodsi&#xff09;作为“2022年福布斯全球亿万…

最新综述!AIGC到底是什么?都有哪些应用?一文尽览!

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 ADAS巨卷干货&#xff0c;即可获取 点击进入→自动驾驶之心【AIGC】技术交流群 摘要 为了应对数字经济中数字智能的挑战&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;应运而生。AIGC使用人工智能&#xff0c;…

知乎高赞:普通人如何在这次ChatGPT热潮中搞钱?

过去这一段时间&#xff0c;ChatGPT可谓是红得发紫。其实去年已经火过一阵了&#xff0c;我当时还写过几篇相关的文章。 但上一次火&#xff0c;更多还是在咱们IT互联网的圈子里火&#xff0c;而这一次是彻底火出圈&#xff0c;各行各业都在争相报告&#xff0c;甚至连很多官媒…

用ChatGPT直播带货!Firework发布全球首个直播购物GPT

美东时间5月3日&#xff0c;美通社消息&#xff0c;视频技术服务平台Firework&#xff0c;宣布推出首个用于视频直播服务的类ChatGPT生成式AI产品&#xff0c;以帮助播主提升商业化转化率和客户体验。 据悉&#xff0c;美国著名连锁超市The Fresh Market将成为该产品的首批用户…

知名科技公司创始人被曝猛料:“偷”代码建公司,学历造假,拖欠工资

推荐阅读&#xff1a;程序员的悲哀是什么&#xff1f; 新智元报道 编辑&#xff1a;编辑部 【新智元导读】「借用」他人代码&#xff0c;建起10亿美元帝国&#xff1f; Stablity AI创始人Emad Mostaque&#xff0c;最近被福布斯「扒皮」了&#xff01; 福布斯在一篇长文中爆料…

Stable Diffusion 被爆剽窃!创始人学历造假、拖延工资

来源 | 新智元 Stablity AI创始人Emad Mostaque&#xff0c;最近被福布斯「扒皮」了&#xff01; 福布斯在一篇长文中爆料&#xff0c;让Stabiliyt AI名声鹊起的Stable Diffusion&#xff0c;源代码其实是另一组研究人员写的。 在Stable Diffusion发表之前&#xff0c;来自德…

Python开源项目月排行 2023年6月

#2023年6月2023年6月10日1FinGPT对标BloombergGP &#xff0c;哥伦比亚大学联合上海纽约大学推出全新大模型产品FinGPT &#xff0c;这是一款面向金融领域的大模型产品。FinGPT采用以数据为中心的方法&#xff0c;提供给研究者和从业者使用的透明资源&#xff0c;便于他们开发自…