java web实现 忘记密码(找回密码)功能及代码

(一).总体思路

(二).部分截图

(三).部分代码

(一).总体思路:

1.在 找回密码页面 录入 姓名、邮箱和验证码,录入后点击【提交】按钮,此时发送一封邮件,邮件中带有加密后的链接。

2.点开 邮件中链接,解密并判断链接是否有效,验证通过后 到 修改密码页面。

3.在修改页面中 录入新密码, 点击【修改按钮】修改密码,操作完成。

(二).部分截图:

f938e412b6d2bc5b1dd27b793e1c3671.png

02a5425163ead4b6bc1f67b976cf698e.png

efcb622697cf6a6c3693759c950d85b4.png

(三).部分代码:

代码1(对应上面总体思路1):此处关键是 生成加密链接,而且此链接 参数需要在浏览器中get方式传递,不能支持“+”,"/"等特殊字符。

//添加 过期时间,24小时后链接失效

long endTimes = System.currentTimeMillis()+1*24*3600*1000;

String para= personname+";"+email+";"+endTimes;//先加密,再url转码,顺序不能修改 modify by lifq 20150317

String encode =UrlUtil.getURLEncoderString(DesUtil.encrypt(para));

content= EmailUtil.replace(content, "{EMAIL_SETPWD_ADD2}", "http://localhost:8080/test/toSetPayrollPwd2.do?vc="+encode);

代码2(对应上面总体思路2):此处关键是  获取参数vc并解密。

/*** 找回 密码 第二步

*

*@returnString

*@authorlifq

* @date 2015-3-17 上午10:24:09*/

publicString toSetPayrollPwd2(){

String vc= context.getParameter("vc");if(null!=vc){try{//此处直接 des解码

String decode =DesUtil.decrypt(vc);

List list= EmailUtil.parseContent(decode, ";");if(null!=list && list.size()>0){

String personname= (String)list.get(0);

String email= (String)list.get(1);long entimes = Long.parseLong((String)list.get(2));long curtime =System.currentTimeMillis();if(entimes<=curtime){

context.setRequestAttribute("errorMsg", "当前链接已失效,请重新 后去重置密码链接!");

}else{

context.setRequestAttribute("personname", personname);

context.setRequestAttribute("email", email);

context.setRequestAttribute("vc", UrlUtil.getURLEncoderString(vc));

}

}

}catch(Exception e) {

e.printStackTrace();

context.setRequestAttribute("errorMsg", "链接无效!");

}

}returnRETURN_SUCCESS;

}

上述部分涉及到URL加密解密的util类 和 DES加密、解密的util类,在之前文章中有代码:

原文:http://www.cnblogs.com/haha12/p/4345070.html

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐