java web 邮箱激活 与 忘记密码(重置密码)

29 篇文章 5 订阅

推荐: java后台通用权限管理系统(springboot)https://blog.csdn.net/zwx19921215/article/details/97806078

推荐:java 个人博客系统高级版(springboot)https://blog.csdn.net/zwx19921215/article/details/102665020

推荐:Java秒杀系统优化(高性能高并发)https://blog.csdn.net/zwx19921215/article/details/103270209

推荐java聊天室项目http://zyshare.cn/resource/detail/15

 

由于在项目中要实现用户注册的邮箱激活以及忘记密码重置密码功能,所以通过查阅资料做了一个简单的设计和实现。

邮箱激活

背景:几乎每个网站或论坛之类的用户注册后都需要通过发送邮件到邮箱激活用户。
设计:
激活步骤:
1、 发送激活操作链接地址至用户邮箱。
2、 用户至邮箱查收邮件。
3、 用户点击链接,跳转至成功页面(修改激活状态),激活成功。
 
实现:
 
/**
	 * 发送邮件
	 * 
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/sendEmail.jhtml")
	@ResponseBody
	public String sendEmail(HttpServletRequest request) {
		DynamicParams params = new DynamicParams(request);
		StringBuilder builder = new StringBuilder();
		StringBuffer url = new StringBuffer();
		String type = params.getString("type");
		Long uid = params.getLong("id");
		User user = userManager.find(uid);
		String subject = "";
		
			// 判断是否已激活
			if ("1".equals(String.valueOf(user.getEmailStatus()))) {
				return errMsg();
			}
			String contextPath = request.getContextPath();
			String rUrl = String.valueOf(request.getRequestURL());
			url.append(rUrl.substring(0, rUrl.indexOf(contextPath)));
			url.append(contextPath + "/account");
			// 邮箱激活
			// url.append("/activateEmail.jhtml?email=" + user.getEmail() +
			// "&id=" + uid + "&mode=activate");
			url.append("/activateEmail.jhtml?id=" + uid + "&mode=activate");
			// 正文
			builder.append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" </head><body>");
			builder.append("请点击下方链接激活您的邮箱,完成激活邮箱的操作!");
			builder.append("<br/><br/>");
			builder.append("<a href=\"" + url + "\">");
			builder.append(url);
			builder.append("</a>");
			builder.append("</body></html>");
			subject = "邮箱地址激活 - xxxx";
		
		MailSender.mailSimple(user.getEmail(), subject, builder.toString(),
				false, null);
		return successMsg();
	}

	/**
	 * 激活邮箱
	 * 
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/activateEmail.jhtml")
	public String activateEmail(HttpServletRequest request, Model model) {
		DynamicParams params = new DynamicParams(request);
		// 激活之前查询
		User user = userManager.find(params.getLong("id"));

		if ("1".equals(String.valueOf(user.getEmailStatus()))) {
			// 已激活
			model.addAttribute("flag", false);
		} else {
			// 未激活
			userManager.activateEmail(params);
			// 激活之后查询
			user = userManager.find(params.getLong("id"));
			request.getSession().setAttribute("sessionUser", user);
			model.addAttribute("mode", params.getString("mode"));
			model.addAttribute("flag", true);
		}
		return "site/modules/account/activateSuccess";
	}
 
 
MailSender.mailSimple(user.getEmail(), subject, builder.toString(),false, null);即为发送邮件工具类,如有不明白可参考我之前的文章(spring mail发送邮件)
 
 
 

忘记密码(重置密码)

 

背景:同样是各大网站都会拥有的一个功能,通过发送验证码到用户注册的邮箱重置密码

设计:1)输入用户名/手机号码/邮箱,验证码。
             2)用户选择手机验证或邮箱验证,发送验证码到手机或邮箱。如果用户邮箱未激活,则不允许邮箱验证。
             3)用户输入验证码成功,进入密码重新设置页面。
             4)重置密码

 

流程:

 

 

 

 

实现:

 

	/**
	 * 发送邮件
	 * 
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/sendEmail.jhtml")
	@ResponseBody
	public String sendEmail(HttpServletRequest request) {
		DynamicParams params = new DynamicParams(request);
		StringBuilder builder = new StringBuilder();
		StringBuffer url = new StringBuffer();
		String type = params.getString("type");
		Long uid = params.getLong("id");
		User user = userManager.find(uid);
		String subject = "";
		
			// type = forget 密码重置
			String verifyCode = VerifyCodeUtils.generateVerifyCode(4);
			request.getSession().setAttribute("resetCertCode", verifyCode);
			url.append("<font color='red'>" + verifyCode + "</font>");
			// 正文
			builder.append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head><body>");
			builder.append("要使用新的密码, 请将已下字符输入验证框中,完成重置密码的操作!");
			builder.append("<br/><br/>");
			builder.append("<div>" + url + "</div>");
			builder.append("</body></html>");
			subject = "密码重置 - xxxx";
		
		MailSender.mailSimple(user.getEmail(), subject, builder.toString(),
				false, null);
		return successMsg();
	}


至此,激活邮箱和忘记密码功能已初步完成!如有不同看法的朋友,请留下您宝贵的意见或建议。

关注微信公众号“虾米聊吧”,后续持续放送“技术架构和资料”干货!!!   

一个热衷于分享技术和生活的程序猿,让我们一起交流吧~      

                    

                  微信扫描二维码,关注我的公众号

 

  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 38
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值