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

(一).总体思路

(二).部分截图

(三).部分代码

(一).总体思路:

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

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

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

(二).部分截图:

(三).部分代码:

  代码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并解密。

/**
* 找回 密码 第二步
*
* @return String
* @author lifq
* @date 2015-3-17 上午10:24:09
*/
public String 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", "链接无效!");
}
}
return RETURN_SUCCESS;
}

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

1.java 实现 DES加密 解密算法

2.java实现url转码解码

java web实现 忘记密码(找回密码)功能及代码的更多相关文章

  1. 关于wordpress忘记密码 找回密码的方式

    1.通过直接修改数据库中密码的加密字符(如果wordpress的版本不同,那么此方法是不好实现的) 2.使用找回密码的方式:通过邮箱找回密码 前端登录密码错误后 会显示   错误); 方法二 打开WP ...

  2. 【Linux常见问题】CentOS 6 root用户密码忘记,找回密码方法

    1.Linux的root密码修改不像Windows的密码修改找回,Windows的登录密码忘记需要介入工具进行解决.CentOS6和CentOS7的密码方法也是不一样的,具体如下: 2.centos ...

  3. 【Linux常见问题】CentOS 7 root用户密码忘记,找回密码方法

    1.开机按esc 2.选择CentOS Linux (3.10.0-693.......)     按 e 键: 3.光标移动到 linux 16 开头的行,找到 ro 改为 rw init=sysr ...

  4. java web 自定义错误页面 完整jsp错误页面代码(同时写错误日志) error.jsp

    1.首先配置web.xml  添加一下代码 <error-page> <error-code>500</error-code> <location>/e ...

  5. (进阶篇)PHP+Mysql+jQuery找回密码

    通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密 ...

  6. PHP+Mysql+jQuery找回密码

    通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密 ...

  7. ThinkPHP 3.2 用户注册邮箱验证帐号找回密码

    一.前言 当然现在有的网站也有手机短信的方式找回密码,原理就是通过发送验证码来验明正身,和发送邮件验证一样,最终还是要通过重置密码来完成找回密码的流程. 本文将使用PHP+Mysql+jQuery来实 ...

  8. 通过邮件找回密码功能的Java实现

    1.有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人 ...

  9. Java实现邮箱找回密码 --转载

    通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的 ...

随机推荐

  1. 闭包 this,arguemnts 问题

    因为每个函数在被调用时,其活动对象都会自动取得两个特殊的变量,this和arguments.内部函数的搜索这两个变量时,只会搜索到其活动对象为止.因此永远不可能直接访问到外部函数中的这两个变量     ...

  2. yii1.1.15 accessRules的一个小bug

    public function accessRules() { return array( array( 'allow', 'actions'=>array('ajaxChangeImage', ...

  3. quick-x 触摸事件的新方法

    --[[ local function onTouch(event, x, y) print(event, x, y) if event == "began" then retur ...

  4. 链表与Hash检索实测

    测试环境: Win7 SP1.8G内存.3.4GHz 4核 测试代码: using System; using System.Collections.Generic; using System.Lin ...

  5. DXP 技巧和龙芯3A装机

    时间过得好快!来公司已经半个月多了!本想着每日一搏,可是一再被耽搁,到今天才写.好了,废话不说了.就把自己这些天做的事写一些.理一理吧.也希望大家监督,由于水平有限,有不正确的地方,还望指正! 刚来做 ...

  6. jQuery分页插件jBootstrapPage,一个Bootstrap风格的分页插件

    一个Bootstrap风格的分页控件,对于喜欢Bootstrap简洁美观和扁平化的同学可以关注jBootstrapPage, 目前jBootstrapPage最新版为V0.1,后续还有更多功能需要完善 ...

  7. bzoj 3143: [Hnoi2013]游走 高斯消元

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1026  Solved: 448[Submit][Status] ...

  8. Cocos2d-x 2.0以上版本安装方法

    1,cd 到2dx根目录,MAC平台使用./create-multi-platform-projects.py  然后提示: -bash: ./create-multi-platform-projec ...

  9. 内存管理(memory allocation内存分配)

    Memory management is the act of managing computer memory. The essential requirement of memory manage ...

  10. Delphi中代替WebBrowser控件的第三方控件

    这几天,接触到在delphi中内嵌网页,用delphi7自带的TWebBrowser控件,显示的内容与本机IE8显示的不一样,但是跟装IE8之前的IE6显示一个效果.现在赶脚是下面两个原因中的一个: ...