java web实现邮箱激活与忘记密码

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

邮箱激活

背景:几乎每个网站或论坛之类的用户注册后都需要通过发送邮件到邮箱激活用户。
设计:

激活步骤:

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();
 }

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JavaWeb利用邮箱帮用户找回密码

    本文是介绍在一个小的JAVAWeb项目中,利用邮箱帮用户找回密码. 效果展示    需要一个发送邮件的jar包 : javax.mail .jar 1.JSP页面(设置邮箱输入框) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="

  • Java实现邮箱找回密码实例代码

    通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 邮箱 3.加密能防止

  • java实现通过绑定邮箱找回密码功能

    本文实例为大家分享了java实现通过绑定邮箱找回密码功能,供大家参考,具体内容如下 1.输入用户名及验证码,验证用户名是否存在 (1).生成验证码工具类 package com.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map

  • Java实现注册邮箱激活账户实例代码

    在网站注册时一般都会要验证注册用户身份的合法性,通常的做法是提供手机号验证或者邮箱验证. 手机验证:填写手机号码,点击发送验证码,接收后填写验证码比对,无误后注册成功. 邮箱验证:注册时填写邮箱账号,点击注册,网站邮箱会给该邮箱发送一封激活邮件,用户点击后激活该账号. 这里通过实例来介绍一下邮箱验证的实现过程,例子可以运行,暂时没有发现什么问题,不过也可能有不安全的地方,欢迎大家指正. 实现思路 注册时填写邮箱,点击注册时网站系统邮箱发送激活验证链接到此邮箱,用户来激活账户 点击注册,系统邮箱会

  • Java随机密码生成并和邮箱、手机号匹配

    废话不多说了,直接给大家贴java代码了,代码有所注释,写的不好,还请各位大家多多关照. 代码如下所示: package com.alibaba.uyuni.common.util; import java.util.Random; public class GeneratePassword { /** * 生成随机密码 * @param pwd_len * 生成的密码的总长度 * @return 密码的字符串 */ public static String genRandomNum(int p

  • Java注册邮箱激活验证实现代码

    最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 RegisterValidateService.java 复制代码 代码如下: package com.app.service.impl; import java.text.ParseException;import java.util.Date; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stere

  • JavaEE账号注册模拟网站邮箱激活

    本项目是javaWeb和email结合的项目,模拟网站必须要激活邮箱账号才可以使用, 创建数据库 create table user( id varchar(32) primary key, name varchar(30), pwd varchar(20), email varchar(20), active char(1), acode varchar(32) ) User.java值对象 package cn.hncu.reg.domain; import javax.persistenc

  • java web激活邮箱并找回密码

    几乎每个网站或论坛之类的用户注册后都需要通过发送邮件到邮箱激活用户,如何激活邮箱呐? 设计激活步骤: 1.发送激活操作链接地址至用户邮箱. 2.用户至邮箱查收邮件. 3.用户点击链接,跳转至成功页面(修改激活状态),激活成功. 实现: /** * 发送邮件 * * @param request * @return */ @RequestMapping(value = "/sendEmail.jhtml") @ResponseBody public String sendEmail(Ht

  • java web实现邮箱激活与忘记密码

    由于在项目中要实现用户注册的邮箱激活以及忘记密码重置密码功能,所以通过查阅资料做了一个简单的设计和实现. 邮箱激活 背景:几乎每个网站或论坛之类的用户注册后都需要通过发送邮件到邮箱激活用户. 设计: 激活步骤: 1. 发送激活操作链接地址至用户邮箱. 2. 用户至邮箱查收邮件. 3. 用户点击链接,跳转至成功页面(修改激活状态),激活成功. 实现: /** * 发送邮件 * * @param request * @return */ @RequestMapping(value = "/sendE

  • java web实现邮箱发送功能

    本文实例为大家分享了java web实现邮箱发送功能的具体代码,供大家参考,具体内容如下 1.邮箱协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMTP协议.SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议. 2.需要使用的jar包 下载地址 3.代码实现 package com.bhkj.ShoppingMall

  • java web中使用cookie记住用户的账号和密码

    毕业设计中需要用到记住账号密码的功能,网上搜到了一个解决方案,自己稍加改造就是下面的方法. 首先是登录的页面,当用户勾选记住密码,传递给controller(我用的SSM框架),后台设置cookie的值,然后下次登录的时候就不用再次输入账号和密码了. login.jsp的代码: <%@page import="org.apache.commons.lang.StringUtils"%> <%@ page language="java" conten

  • django 开发忘记密码通过邮箱找回功能示例

    一.流程分析: 1.点击忘记密码====>forget.html页面,输入邮箱和验证码,发送验证链接网址的邮件====>发送成功,跳到send_success.html提示 2.到邮箱里找到验证链接网址,访问重设密码网址reset.html===>重设密码提交数据,成功则返回首页,失败则返回错误信息 二. 1.users/forms.py文件中 from django import forms from captcha.fields import CaptchaField .......

  • Java 注册时发送激活邮件和激活的实现示例

    Java 注册时发送激活邮件和激活的实现示例 最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 1.RegisterController.java package com.app.web.controller; import java.text.ParseException; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http

  • Servlet+JavaBean+JSP打造Java Web注册与登录功能

    采用Java Web所实现的MVC结构图如下,其中控制器部分采用Servlet来实现,模型部分采用JavaBean来实现,而大部分的视图采用Jsp页面来实现. 思想基础 JSP+JavaBean两层结构工作原理应该是比较熟悉的,也比较好理解. 但是有一点必须要清楚就是用户通过浏览器来发送网页的请求,此请求到达服务器后在服务器端查找对应的网页,如果是首次请求(第二次就不用解释执行了),对于JSP来说要生成Servlet,然后通过Servlet引擎来执行 Servlet,把调用JavaBean的结果

  • Java Web stmp发送带附件邮件(附SSL版)

    本文实例为大家分享了Java Web stmp发送带附件邮件的具体代码,供大家参考,具体内容如下 public class MailFileSendUtils { private Properties props; //系统属性 private Session session; //邮件会话对象 private MimeMessage mimeMsg; //MIME邮件对象 private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成Mi

  • Java Web学习之MySQL在项目中的使用方法

    前言 尴尬:access denied for user 'root'@'localhost' using password yes 有时候,在连接 MySQL 数据的时候,会报一个错误信息 "access denied for user 'root'@'localhost' using password yes",看到这个错误不要一脸懵逼,造成错误的原因就是数据库访问的用户名或密码不正确,这时候一般又分为以下两种情况,分别说一说解决方法. 一.新安MySQL未设置密码,这种情况就需要

随机推荐