java web實(shí)現(xiàn)郵箱激活與忘記密碼
由于在項(xiàng)目中要實(shí)現(xiàn)用戶注冊(cè)的郵箱激活以及忘記密碼重置密碼功能,所以通過查閱資料做了一個(gè)簡單的設(shè)計(jì)和實(shí)現(xiàn)。
郵箱激活
背景:幾乎每個(gè)網(wǎng)站或論壇之類的用戶注冊(cè)后都需要通過發(fā)送郵件到郵箱激活用戶。
設(shè)計(jì):
激活步驟:
1、 發(fā)送激活操作鏈接地址至用戶郵箱。
2、 用戶至郵箱查收郵件。
3、 用戶點(diǎn)擊鏈接,跳轉(zhuǎn)至成功頁面(修改激活狀態(tài)),激活成功。
實(shí)現(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("請(qǐng)點(diǎn)擊下方鏈接激活您的郵箱,完成激活郵箱的操作!");
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ā)送郵件)

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


實(shí)現(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("要使用新的密碼, 請(qǐng)將已下字符輸入驗(yàn)證框中,完成重置密碼的操作!");
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();
}
至此,激活郵箱和忘記密碼功能已初步完成!如有不同看法的朋友,請(qǐng)留下您寶貴的意見或建議。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis-plus調(diào)用update方法時(shí),自動(dòng)填充字段不生效問題及解決
這篇文章主要介紹了mybatis-plus調(diào)用update方法時(shí),自動(dòng)填充字段不生效問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Spring Boot實(shí)現(xiàn)郵件服務(wù)(附:常見郵箱的配置)
這篇文章主要給大家介紹了關(guān)于Spring Boot實(shí)現(xiàn)郵件服務(wù)的相關(guān)資料,文中還附上了常見郵箱的配置,通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
Hibernate雙向一對(duì)一映射關(guān)系配置代碼實(shí)例
這篇文章主要介紹了Hibernate雙向一對(duì)一映射關(guān)系配置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Java Stream中自定義Collector實(shí)現(xiàn)復(fù)雜數(shù)據(jù)收集的方法
Java Stream API中的Collector接口是一個(gè)強(qiáng)大的工具,它允許我們自定義數(shù)據(jù)收集、轉(zhuǎn)換和聚合的過程,,本文介紹了Java Stream中自定義Collector實(shí)現(xiàn)復(fù)雜數(shù)據(jù)收集方法,需要的朋友可以參考下2024-08-08
springboot實(shí)現(xiàn)https雙向傳輸協(xié)議的示例代碼
本文主要介紹了springboot實(shí)現(xiàn)https雙向傳輸協(xié)議的示例代碼,包含配置證書和私鑰路徑、調(diào)用請(qǐng)求方法等步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03
java如何將Object數(shù)組轉(zhuǎn)換為指定類型數(shù)組
這篇文章主要介紹了java如何將Object數(shù)組轉(zhuǎn)換為指定類型數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08

