java實(shí)現(xiàn)短信驗(yàn)證碼5分鐘有效時(shí)間
本文實(shí)例為大家分享了java實(shí)現(xiàn)短信驗(yàn)證碼5分鐘有效時(shí)間,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)一個(gè)發(fā)送短信驗(yàn)證碼的請(qǐng)求,要求5分鐘之內(nèi)重復(fù)請(qǐng)求,返回同一個(gè)驗(yàn)證碼。
網(wǎng)上可找到幾種方案:
如,存儲(chǔ)數(shù)據(jù)庫或緩存中。實(shí)現(xiàn)起來比較麻煩,舍棄;
另一種方式即本例,使用session存儲(chǔ)。其他方式,暫未進(jìn)一步了解。
實(shí)現(xiàn)步驟: (springmvc)
1、controller中,獲取session對(duì)象,取code,取不到新生成,并存儲(chǔ)session中;
2、單手機(jī)號(hào)發(fā)送量,判斷并 +1 記入數(shù)據(jù)庫;
3、Timer定時(shí)器,設(shè)置新線程延時(shí)執(zhí)行TimerTask任務(wù)(刪除code)
@RequestMapping(value = "sendMessage",method = RequestMethod.GET) public Object sendMessage(final HttpServletRequest request){ String phone=request.getParameter("phone"); int times=userService.messageSendToday(phone); //二次驗(yàn)證,單個(gè)手機(jī)號(hào)每日發(fā)送上限 if(times <= MAX_PER_DAY){ String checkCode=GenerateRandomCode.createRandomNumber(6); final HttpSession httpSession=request.getSession(); httpSession.setAttribute("checkCode",checkCode); CheckCodeMessage checkCodeMessage=new CheckCodeMessage(phone,checkCode); try { HttpSender.batchSend(checkCodeMessage); //TimerTask實(shí)現(xiàn)5分鐘后從session中刪除checkCode final Timer timer=new Timer(); timer.schedule(new TimerTask() { @Override public void run() { httpSession.removeAttribute("checkCode"); System.out.println("checkCode刪除成功"); timer.cancel(); } },5*60*1000); } catch (Exception e) { e.printStackTrace(); } return "redirect:/index.jsp"; } }
Timer定時(shí)任務(wù):
//TimerTask實(shí)現(xiàn)5分鐘后從session中刪除checkCode final Timer timer=new Timer(); timer.schedule(new TimerTask() { @Override public void run() { httpSession.removeAttribute("checkCode"); System.out.println("checkCode刪除成功"); timer.cancel(); } },5*60*1000);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java開發(fā)完整短信驗(yàn)證碼功能的全過程
- Java實(shí)現(xiàn)SMS短信通發(fā)送手機(jī)驗(yàn)證碼案例講解
- Java調(diào)取創(chuàng)藍(lán)253短信驗(yàn)證碼的實(shí)現(xiàn)代碼
- java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例
- Java實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼功能
- Java使用云片API發(fā)送短信驗(yàn)證碼
- Java實(shí)現(xiàn)短信驗(yàn)證碼和國際短信群發(fā)功能的示例
- Java實(shí)現(xiàn)用戶短信驗(yàn)證碼登錄功能實(shí)例代碼
相關(guān)文章
Mybatis-plus foreach拼接字符串查詢無數(shù)據(jù)返回問題
這篇文章主要介紹了Mybatis-plus foreach拼接字符串查詢無數(shù)據(jù)返回問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Java中String類(字符串操作)的10個(gè)常見問題和解決方法
這篇文章主要介紹了Java中String類(字符串)操作的10個(gè)常見問題,需要的朋友可以參考下2014-04-04java中Callback簡(jiǎn)單使用總結(jié)
正好學(xué)習(xí)到j(luò)ava Callback,就整理了一下,希望整理的文章內(nèi)容對(duì)大家有所幫助2017-04-04SpringBoot中使用HTTP客戶端工具Retrofit
這篇文章主要為大家介紹了SpringBoot中使用HTTP客戶端工具Retrofit方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06解決springboot配置logback-spring.xml不起作用問題
這篇文章主要介紹了解決springboot配置logback-spring.xml不起作用問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11SpringBoot實(shí)現(xiàn)阿里云快遞物流查詢的示例代碼
本文將基于springboot實(shí)現(xiàn)快遞物流查詢,物流信息的獲取通過阿里云第三方實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2021-10-10