溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2020-08-30 07:28:04 來(lái)源:腳本之家 閱讀:153 作者:一大三千 欄目:編程語(yǔ)言

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

整體流程:

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

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

第一步偽代碼:

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ā)送的頻率過(guò)快!");  

        }  

      },  

      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ī)號(hào)是否被注冊(cè) */


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

    String captcha = Generator.generateCaptcha();  


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

   req.setReceive(recPhoneNum);

    try {  

     // 發(fā)送請(qǐng)求

      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))
// 相同通過(guò),則無(wú)效化驗(yàn)證碼
session.setAttribute("captcha", null);

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


如有疑問(wèn),請(qǐng)指出!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI