开发忘记密码功能遇到的问题
后端验证功能用的是shiro框架,当前端发送AJax请求到后端,如果在application.yml文件中没有将找回页面所需要调用的接口配置为匿名,那么这些接口不会不调用,在浏览器的开发者模式下,也可以看到该接口会报302错误。
所以我们需要在项目的yml文件中配置该接口的匿名配置
自此,在未登录的状态下,通过调用后端接口修改密码的功能完成。
接下来是前端js遇到的问题
首先是要写html代码,设置忘记密码页面的样式。我这采用的是弹窗方式。
在login.jsp文件中添加忘记密码的样式,点击的话会调用findPwd()方法
findPwd: function () {
require(["artDialog","Tips"],function () {
var dialogObj = dialog({
url: App.contextPath + "/findPwd.htm",
title: '找回密码',
quickClose: false,
width: 400,
height: 350,
okValue:'确定',
cancelValue:'取消',
ok: function () {
$(window.parent.document).contents().find("#" + dialogObj.id)[0].contentWindow.pageObj.save();
return false;
},
cancel:function () {
return true;
}
});
pageObj.dialogObj = dialogObj;
dialogObj.showModal();
});
},
这段代码是findPwd()方法的jsp代码,里面new了一个dialog,设置了dialog的样式。
url: App.contextPath + "/findPwd.htm",
这个url配置的是findPwd()方法调用的js脚本文件的路径。
okValue:'确定',
cancelValue:'取消',
ok: function () {
$(window.parent.document).contents().find("#" + dialogObj.id)[0]