欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)手機(jī)短信驗(yàn)證的基本思路

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

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

整體流程:

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

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

第一步偽代碼:

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)絡(luò)超時(shí)");  

        clearTimeout(t);  

        b_code = true;  

        var msg = "獲取驗(yàn)證碼";  

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

        c = 60;  

      }  

    });  

  }  

第二步偽代碼:

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

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

    String responseBody = null;  


    /* 這里驗(yàn)證手機(jī)號是否被注冊 */


   // 生成驗(yàn)證碼

    String captcha = Generator.generateCaptcha();  


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

   req.setReceive(recPhoneNum);

    try {  

     // 發(fā)送請求

      responseBody = req.send();

     // 將驗(yàn)證碼放入session

      model.addAttribute("captcha", captcha);  

     // 得到結(jié)果

      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());  

    }  

    // 解析結(jié)果

    if (successJson != null) {  

      successJson = successJson.getJSONObject("result");  

      return successJson.getBoolean("success");  

    } else {  

      return false;  

    }  

  }  

最后一步偽代碼:

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

else
// 不通過并提示無效驗(yàn)證碼


如有疑問,請指出!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • FeignClient如何脫離eureka自定義URL

    FeignClient如何脫離eureka自定義URL

    這篇文章主要介紹了FeignClient如何脫離eureka自定義URL,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 深入理解ContextClassLoader加載器

    深入理解ContextClassLoader加載器

    這篇文章主要介紹了深入理解ContextClassLoader加載器,Thread?context?class?loader存在的目的主要是為了解決parent?delegation機(jī)制下無法干凈的解決的問題,需要的朋友可以參考下
    2023-10-10
  • SpringBoot部署到Linux讀取resources下的文件及遇到的坑

    SpringBoot部署到Linux讀取resources下的文件及遇到的坑

    本文主要給大家介紹SpringBoot部署到Linux讀取resources下的文件,在平時(shí)業(yè)務(wù)開發(fā)過程中,很多朋友在獲取到文件內(nèi)容亂碼或者文件讀取不到的問題,今天給大家分享小編遇到的坑及處理方案,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實(shí)現(xiàn)

    Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實(shí)現(xiàn)

    使用一致性hash時(shí),如何找到一個(gè)hash值對應(yīng)的臨近節(jié)點(diǎn),可以使用集合中獲取數(shù)據(jù)的前驅(qū)和后繼元素實(shí)現(xiàn),所以本文給大家介紹了Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實(shí)現(xiàn),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-05-05
  • JavaSE中Lambda表達(dá)式的使用與變量捕獲

    JavaSE中Lambda表達(dá)式的使用與變量捕獲

    這篇文章主要介紹了JavaSE中Lambda表達(dá)式的使用與變量捕獲,Lambda表達(dá)式允許你通過表達(dá)式來代替功能接口, 就和方法一樣,它提供了一個(gè)正常的參數(shù)列表和一個(gè)使用這些參數(shù)的主體,下面我們來詳細(xì)看看,需要的朋友可以參考下
    2023-10-10
  • mybatis報(bào)Query?was?Empty異常的問題

    mybatis報(bào)Query?was?Empty異常的問題

    這篇文章主要介紹了mybatis報(bào)Query?was?Empty異常的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java Native關(guān)鍵字原理及作用解析

    Java Native關(guān)鍵字原理及作用解析

    這篇文章主要介紹了Java Native關(guān)鍵字原理及作用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 解析Java的Spring框架的BeanPostProcessor發(fā)布處理器

    解析Java的Spring框架的BeanPostProcessor發(fā)布處理器

    這篇文章主要介紹了Java的Spring框架的BeanPostProcessor發(fā)布處理器,Spring是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • 基于Jasypt對SpringBoot配置文件加密

    基于Jasypt對SpringBoot配置文件加密

    這篇文章主要介紹了基于Jasypt對SpringBoot配置文件加密,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段

    java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段

    這篇文章主要為大家詳細(xì)介紹了java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論