最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)手機短信驗證的基本思路

 更新時間:2017年11月23日 16:45:05   作者:一大三千  
這篇文章主要為大家詳細介紹了java實現(xiàn)手機短信驗證的基本思路,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現(xiàn)手機短信驗證的具體代碼,供大家參考,具體內容如下

整體流程:

  1. 客戶填入手機號,通過客戶端點擊獲取驗證碼按鈕,驗證手機號是否有效,有效則客戶端發(fā)送請求到后臺服務器,客戶端開始倒計時60s,不通過則返回;
  2. 服務器,驗證手機號是否被注冊或有效,通過則調用第三方的短信通信接口并發(fā)送相關數(shù)據(jù)(包括手機號和驗證碼),然后回調結果,成功則將驗證碼存入session,失敗則返回提示,不通過則返回。
  3. 客戶收到驗證碼后在有效時間內,填入并發(fā)送請求。
  4. 服務器端,收到請求后,用戶發(fā)送過來的驗證碼和事前放入session的驗證碼做對比,相同通過,否則提示驗證碼無效。

通過后,需要將session中的驗證碼無效化,一般就是置為空。

第一步偽代碼:

function sendCaptcha(tel) {  

    console.log("sendCaptcha: tel = " + tel);  

    $.ajax({  

      type: 'post',  

      url: '/sms/captcha/' + tel,  

      dataType: "json",  

      success: function (data) {  

        console.log("sendCaptcha ==> success: data = " + eval(data));  

        if (data) {  

          countdown();  

          b_code = false;  

        } else {  

          alert("您發(fā)送的頻率過快!");  

        }  

      },  

      error: function (data) {  

        console.log("sendCaptcha ==> error: data = " + eval(data));  

        alert("網(wǎng)絡超時");  

        clearTimeout(t);  

        b_code = true;  

        var msg = "獲取驗證碼";  

        $("#code").text(msg);  

        c = 60;  

      }  

    });  

  }  

第二步偽代碼:

@RequestMapping(value = "captcha/{recPhoneNum}", method = RequestMethod.POST)  

  public Object getSmsCaptcha(ModelMap model, @PathVariable("recPhoneNum")String recPhoneNum) {  

    String responseBody = null;  


    /* 這里驗證手機號是否被注冊 */


   // 生成驗證碼

    String captcha = Generator.generateCaptcha();  


   // 第三方短信通信接口參數(shù)設置

   req.setReceive(recPhoneNum);

    try {  

     // 發(fā)送請求

      responseBody = req.send();

     // 將驗證碼放入session

      model.addAttribute("captcha", captcha);  

     // 得到結果

      responseBody = rsp.getBody();  

      log.debug("getSmsCaptcha: responseBody = " + responseBody);  

      if (rsp.getResult() != null) {  

        model.addAttribute("success_response", rsp.getResult());  

      } else {  

        model.addAttribute("error_response", rsp.getSubMsg());  

      }  

    } catch (ApiException e) {  

      log.error("getSmsCaptcha :" + e.getErrMsg());  

    }  

    // 解析結果

    if (successJson != null) {  

      successJson = successJson.getJSONObject("result");  

      return successJson.getBoolean("success");  

    } else {  

      return false;  

    }  

  }  

最后一步偽代碼:

// 從session取出驗證碼
String captcha = session.getAttribute("captcha");
// 比較
if (reqCaptcha.equals(captcha))
// 相同通過,則無效化驗證碼
session.setAttribute("captcha", null);

else
// 不通過并提示無效驗證碼


如有疑問,請指出!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Mybatis?Plus?逆向工程介紹

    Mybatis?Plus?逆向工程介紹

    這篇文章主要介紹了Mybatis?Plus?逆向工程,文章通過Mybatis?Plus?逆向工程相關資料及示例代碼詳細介紹,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考一下
    2022-01-01
  • 全面了解Java中的CAS機制

    全面了解Java中的CAS機制

    下面小編就為大家?guī)硪黄媪私釰ava中的CAS機制。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot配置Profile實現(xiàn)多環(huán)境支持

    SpringBoot配置Profile實現(xiàn)多環(huán)境支持

    這篇文章主要介紹了SpringBoot配置Profile實現(xiàn)多環(huán)境支持操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java SpringBoot啟動指定profile的8種方式詳解

    Java SpringBoot啟動指定profile的8種方式詳解

    這篇文章主要介紹了spring boot 如何指定profile啟動的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 歸并排序的實現(xiàn)代碼與思路

    歸并排序的實現(xiàn)代碼與思路

    歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。
    2013-03-03
  • Mybatis-Plus同時使用邏輯刪除和唯一索引的問題及解決辦法(報數(shù)據(jù)重復Duplicate entry的問題)

    Mybatis-Plus同時使用邏輯刪除和唯一索引的問題及解決辦法(報數(shù)據(jù)重復Duplicate entry的

    在開發(fā)中,我們經常會有邏輯刪除和唯一索引同時使用的情況,但當使用mybatis plus時,如果同時使用邏輯刪除和唯一索引,會報數(shù)據(jù)重復Duplicate entry的問題,如何解決這個問題呢,小編給大家分享Mybatis-Plus同時使用邏輯刪除和唯一索引的問題及解決辦法,一起看看吧
    2023-11-11
  • Spring?依賴查找的使用小結

    Spring?依賴查找的使用小結

    在不同的編程框架和容器中,依賴查找的方式可能會有所不同,本文主要介紹了Spring依賴查找的使用小結,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Spring大白話之三級緩存如何解決循環(huán)依賴問題

    Spring大白話之三級緩存如何解決循環(huán)依賴問題

    Spring通過三級緩存(singletonObjects、earlySingletonObjects、singletonFactories)解決單例循環(huán)依賴,三級緩存使用Lambda表達式提前暴露bean的早期引用,確保在遞歸調用時能夠正確獲取對象實例,避免死循環(huán)
    2025-02-02
  • MyBatis 與 Spring 的完美整合方法

    MyBatis 與 Spring 的完美整合方法

    MyBatis 和 Spring 兩大框架已經成了 Java 互聯(lián)網(wǎng)技術主流框架組合,它們經受住了大數(shù)據(jù)量和大批量請求的考驗,在互聯(lián)網(wǎng)系統(tǒng)中得到了廣泛的應用。這篇文章主要介紹了MyBatis 與 Spring 整合,需要的朋友可以參考下
    2018-04-04
  • Druid之連接創(chuàng)建及銷毀示例詳解

    Druid之連接創(chuàng)建及銷毀示例詳解

    這篇文章主要為大家介紹了Druid之連接創(chuàng)建及銷毀示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論

祁连县| 兰考县| 富源县| 林周县| 马鞍山市| 新民市| 双牌县| 甘洛县| 万安县| 平罗县| 施秉县| 新郑市| 柳河县| 吕梁市| 淳化县| 海安县| 乌兰县| 济宁市| 吉木萨尔县| 苗栗市| 合川市| 田东县| 贺州市| 宣化县| 津南区| 辽中县| 阜阳市| 邻水| 湘乡市| 泽普县| 海安县| 盐城市| 新巴尔虎右旗| 潜山县| 军事| 灯塔市| 巴东县| 东丰县| 祥云县| 汉寿县| 涪陵区|