修改密码springboot+layui

一、修改密码效果图
修改密码springboot+layui
二、编写思路
将登录用户的Id保存到session中,获取session的用户id,由此可以查出用户名和密码
三、前段代码layui
js代码

//修改密码操作
		$(document).off("click", "#showIndexUpdatePW").on("click", "#showIndexUpdatePW", function () {
			var showContent = $('#showIndexUpdatePWContent').html();
			$('#showIndexUpdatePWContent').html("");
			layer.open({
				type: 1,
				id: 'showLayui',
				title: '修改密码',
				content: showContent, //这里content是一个DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响
				area: '600px',
				btn: ['确定', '取消'],
				btnAlign: 'c',
				success: function (layero, index) {//打开层之后可执行的回调
					layui.use(['form', 'layer'], function () {
						var form = layui.form;
						var layer = layui.layer;

						form.render();  //重新渲染表单
					});
				},
				yes: function (index, layero) { //确定按钮
					var con = {};
					//con.userId = userId.id;
					con.sysOldPWInp = $("#sysOldPWInp").val();
					con.sysNewPWInp = $("#sysNewPWInp").val();
					con.sysConPW = $("#sysConfirmPWInp").val();
					
					var msgArr = ["原密码不能为空", "新密码不能为空", "确认密码不能为空"];  //提示语集合
					var clsArr = ["#sysOldPWInp", "#sysNewPWInp", "#sysConfirmPWInp"];  //id集合
					var validateFlag = until.validate(msgArr, clsArr); //非空验证 需要引入工具js文件until
					if (validateFlag) {
						layer.msg(validateFlag, { anim: 6, time: 1500 });
						return;
					};
					var numFlag = checkInpNum(clsArr); 
					//检查长度是否小于6
					if (numFlag) {
						layer.msg(numFlag, { anim: 6, time: 1500 });
						return;
					};

					$.ajax({
						url: contextPath + "/account/updatePassWord",
						dataType: 'json',
						type: 'post',
						async: false,
						data: con,
						complete: function (XHR, TS) {
							var returnObj = eval('(' + XHR.responseText + ')');
							if (returnObj.code != 200) {
								layer.msg(returnObj.msg, { anim: 6, time: 1500 });
							} else {
								layer.msg(returnObj.msg, { icon: 1, time: 1500 });
								layer.close(index);
								window.setTimeout(function () {
									window.location.href = contextPath + "/logOut";
								}, 1000);

							}
						}
					});

				},
				end: function () { //只要层被销毁了,end都会执行
					$('#showIndexUpdatePWContent').html(showContent);
				}

			});
		});

html代码

<div class="layuiWindownContent">
			<div class="layui-form" lay-filter="indexUPdatePWFrom">
				<div class="layui-form-item">
					<label class="layui-form-label">原密码<font color="red">*</font></label>
					<div class="layui-input-block">
						<input type="password" id="sysOldPWInp" name="sysOldPWInp"
							lay-verify="pass" placeholder="请填写原密码" autocomplete="off"
							class="layui-input" maxlength="14">
					</div>
				</div>
				<div class="layui-form-item">
					<label class="layui-form-label">新密码<font color="red">*</font></label>
					<div class="layui-input-block">
						<input type="password" id="sysNewPWInp" name="sysNewPWInp"
							placeholder="请填写新密码" autocomplete="off" class="layui-input"
							maxlength="14">
					</div>
				</div>
				<div class="layui-form-item">
					<label class="layui-form-label">确认密码<font color="red">*</font></label>
					<div class="layui-input-block">
						<input type="password" id="sysConfirmPWInp" name="sysConfirmPWInp"
							placeholder="请填写确认密码" autocomplete="off" class="layui-input"
							maxlength="14">
					</div>
				</div>
			</div>
		</div>

四、后台代码

  • controller层
// 修改密码
	@RequestMapping("/updatePassWord")
	@ResponseBody
	public RetKit updatePassWord(HttpServletRequest request) {
		AccountAuthentic account = (AccountAuthentic) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
		Integer accountId = account.getAccountId();
		String oldpwd = request.getParameter("sysOldPWInp");
		String newPWInp = request.getParameter("sysNewPWInp");
		String conPW = request.getParameter("sysConPW");
		RetKit retKit = accountService.updataPwd(accountId, oldpwd, newPWInp,conPW
		if(retKit.success()) {
			// 清除session
			Enumeration<String> em = request.getSession().getAttributeNames();
			while (em.hasMoreElements()) {
				request.getSession().removeAttribute(em.nextElement().toString());
			}
			request.getSession().invalidate();
		}
		return retKit;
	}
  • service层
public RetKit updataPwd(Integer id, String oldP, String newP,String conP) {
		Optional<Account> user = accountRepository.findById(id);
		Account account = user.get();
		if (user!=null) {
			if (!HashKit.md5(oldP).equals(user.get().getPassword())) {
				return RetKit.fail("旧密码错误");
			}
			if (!newP.equals(conP)) {
				return RetKit.fail("新密码与确认密码不一致");
			}
			if(HashKit.md5(newP).equals(user.get().getPassword())) {
				return RetKit.fail("新密码与旧密码相同,请重新输入");
			}
			account.setPassword(HashKit.md5(newP));
			try {
				accountRepository.save(account);
			} catch (Exception e) {
				return RetKit.fail("网络异常");
			}
			
			return RetKit.ok("修改成功");
			
		}
		return RetKit.fail("用户登陆失效");
	}