用户修改密码

news/2024/10/31 3:30:26/

用户-修改密码-持久层

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.ppmy.cn/news/354509.html

相关文章

WiFi怎么改密码

WiFi 密码太简单容易被别人破解&#xff0c;如果被别人蹭网了不仅可能导致网速变慢&#xff0c;还有可能导致个人信息泄露&#xff0c;所以要将网络密码修改的复杂一点比较安全。WiFi 怎么改密码&#xff1f;路由器的管理密码又该怎么修改&#xff1f;我们怎么设置可以杜绝别人…

修改密码 passwd

一、命令详解 1.命令说明 passwd命令用于更改设置用户密码。本质上&#xff0c;它将自己初始化为使用Linux PAM的“passwd”服务&#xff0c;并利用配置的密码模块进行身份验证&#xff0c;然后更新用户的密码。 passwd命令用于设置用户的认证信息&#xff0c;包括用户密码、…

修改密码

Sub Initialize %REM 功能&#xff1a;实现用户修改密码功能&#xff0c;每个用户只能修改自己的用户 %END REM On Error Goto UnknowError Dim session As New NotesSession Dim userDB As NotesDatabase Dim userView As NotesView Dim view As NotesView Dim userDc As…

QQ号终于能修改了?

一直以来&#xff0c;在许多网友的眼里&#xff0c;QQ都是作为微信的“前辈”存在的&#xff0c;毕竟QQ上的许多功能都领先了微信许多年。不过这一次&#xff0c;微信的“微信号”功能却被QQ给抄作业了。 12月1日&#xff0c;腾讯QQ宣布用户可以自定义专属ID——QID。 每个ID均…

数据库修改密码

今天在MAC上安装完MYSQL后&#xff0c;MYSQL默认给分配了一个默认密码&#xff0c;但当自己在终端上使用默认密码登录的时候&#xff0c;总会提示一个授权失败的错误&#xff1a;Access denied for user ‘root’’localhost’ (using passwor)如图&#xff1a; 解决方案 既然…

决定教你们如何看别人的 QQ密码

决定教你们如何看别人的 QQ密码&#xff1a; ①随便点个好友②在QQ对话框中输入"我是"两字③不要发送,再按住ALT键④然后顺序按小键盘294.82⑤松开ALT键 这时就会出现对方QQ密码这个是最新腾讯公司新漏洞

luxi如何修改服务器密码,手机绑定QQ怎么修改密码?

满意答案 luxiao3 2013.03.04 采纳率&#xff1a;53% 等级&#xff1a;12 已帮助&#xff1a;9430人 这也有为了你的好地方&#xff0c;因为如果你的手机被别人拿去看密码就被别人知道&#xff0c;所以说有些事情是有利有弊的这就是一种。 至少可以在你没用QQ时候知道自己QQ…

android qq密码,怎么用手机改qq密码

相信很多人都已经是QQ的老用户了&#xff0c;那你知道QQ在哪里修改密码吗&#xff1f;或许你已经太久没有想过这个问题了&#xff0c;但是当手机QQ被盗时&#xff0c;修改密码变得十分重要&#xff0c;那让我们一起来看看怎么用手机来修改QQ密码吧&#xff01; 手机QQ中修改qq密…