java web激活郵箱并找回密碼
幾乎每個網站或論壇之類的用戶注冊后都需要通過發(fā)送郵件到郵箱激活用戶,如何激活郵箱吶?
設計激活步驟:
1、發(fā)送激活操作鏈接地址至用戶郵箱。
2、用戶至郵箱查收郵件。
3、用戶點擊鏈接,跳轉至成功頁面(修改激活狀態(tài)),激活成功。
實現(xiàn):
/**
* 發(fā)送郵件
*
* @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);即為發(fā)送郵件工具類,如有不明白可參考我之前的文章(spring mail發(fā)送郵件)

忘記密碼(重置密碼)
背景:同樣是各大網站都會擁有的一個功能,通過發(fā)送驗證碼到用戶注冊的郵箱重置密碼
設計:1)輸入用戶名/手機號碼/郵箱,驗證碼。
2)用戶選擇手機驗證或郵箱驗證,發(fā)送驗證碼到手機或郵箱。如果用戶郵箱未激活,則不允許郵箱驗證。
3)用戶輸入驗證碼成功,進入密碼重新設置頁面。
4)重置密碼
流程:




實現(xiàn):
/**
* 發(fā)送郵件
*
* @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();
}
至此,激活郵箱和忘記密碼功能已初步完成!希望對大家的學習有所幫助,大家可以動手實現(xiàn)激活郵箱并找回密碼。
相關文章
RestTemplate發(fā)送HTTP?POST請求使用方法詳解
這篇文章主要為大家介紹了RestTemplate發(fā)送HTTP?POST請求的使用方法詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進步2022-03-03
一文詳細springboot實現(xiàn)MySQL數(shù)據(jù)庫的整合步驟
Spring Boot可以很方便地與MySQL數(shù)據(jù)庫進行整合,下面這篇文章主要給大家介紹了關于springboot實現(xiàn)MySQL數(shù)據(jù)庫的整合步驟,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下2024-03-03
GSON實現(xiàn)Java對象與JSON格式對象相互轉換的完全教程
GSON是Google編寫并在在GitHub上開源的Java序列化與反序列化JSON的類庫,今天我們就來總結一下使用GSON實現(xiàn)Java對象與JSON格式對象相互轉換的完全教程2016-06-06
Java使用注解實現(xiàn)BigDecimal的四舍五入
BigDecimal是Java中的一個類,位于java.math包中,它提供了任意精度的有符號十進制數(shù)字的表示,以及對這些數(shù)字進行算術運算的方法,本文介紹了Java使用注解實現(xiàn)BigDecimal的四舍五入的相關知識,需要的朋友可以參考下2024-09-09
Spring需要三個級別緩存解決循環(huán)依賴原理解析
這篇文章主要為大家介紹了Spring需要三個級別緩存解決循環(huán)依賴原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02

