java web實現(xiàn)郵箱激活與忘記密碼
由于在項目中要實現(xiàn)用戶注冊的郵箱激活以及忘記密碼重置密碼功能,所以通過查閱資料做了一個簡單的設(shè)計和實現(xiàn)。
郵箱激活
背景:幾乎每個網(wǎng)站或論壇之類的用戶注冊后都需要通過發(fā)送郵件到郵箱激活用戶。
設(shè)計:
激活步驟:
1、 發(fā)送激活操作鏈接地址至用戶郵箱。
2、 用戶至郵箱查收郵件。
3、 用戶點擊鏈接,跳轉(zhuǎn)至成功頁面(修改激活狀態(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ā)送郵件)
忘記密碼(重置密碼)
背景:同樣是各大網(wǎng)站都會擁有的一個功能,通過發(fā)送驗證碼到用戶注冊的郵箱重置密碼
設(shè)計:
1)輸入用戶名/手機號碼/郵箱,驗證碼。
2)用戶選擇手機驗證或郵箱驗證,發(fā)送驗證碼到手機或郵箱。如果用戶郵箱未激活,則不允許郵箱驗證。
3)用戶輸入驗證碼成功,進入密碼重新設(shè)置頁面。
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(); }
至此,激活郵箱和忘記密碼功能已初步完成!如有不同看法的朋友,請留下您寶貴的意見或建議。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java網(wǎng)絡(luò)通信技術(shù)之簡單聊天小程序
這篇文章主要為大家詳細介紹了java網(wǎng)絡(luò)通信技術(shù)之簡單聊天小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07遞歸出現(xiàn)棧溢出stackoverflow的問題及解決
這篇文章主要介紹了關(guān)于遞歸出現(xiàn)棧溢出stackoverflow的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09Java開發(fā)SpringBoot集成接口文檔實現(xiàn)示例
這篇文章主要為大家介紹了Java開發(fā)SpringBoot如何集成接口文檔的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10教您如何3分鐘快速搞定EasyExcel導(dǎo)入與導(dǎo)出功能
對于EasyExcel庫,我們可以使用它來實現(xiàn)數(shù)據(jù)的導(dǎo)入和導(dǎo)出,下面這篇文章主要給大家介紹了關(guān)于如何3分鐘快速搞定EasyExcel導(dǎo)入與導(dǎo)出功能的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01淺談升級Spring Cloud到Finchley后的一點坑
這篇文章主要介紹了淺談升級Spring Cloud到Finchley后的一點坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10SpringBoot中MyBatis-Plus 查詢時排除某些字段的操作方法
這篇文章主要介紹了SpringBoot中MyBatis-Plus 查詢時排除某些字段的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08Flutter實現(xiàn)文本組件、圖標及按鈕組件的代碼
這篇文章主要介紹了Flutter實現(xiàn)文本組件、圖標及按鈕組件的代碼,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07