修改密码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("用户登陆失效");
}