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

node中短信api實(shí)現(xiàn)驗(yàn)證碼登錄的示例代碼

 更新時(shí)間:2021年01月20日 11:05:18   作者:Jdoit CW  
這篇文章主要介紹了node中短信api實(shí)現(xiàn)驗(yàn)證碼登錄的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. node服務(wù)器搭建+數(shù)據(jù)庫(kù)的連接

此處操作比較簡(jiǎn)潔易懂,可參考:node服務(wù)器快速搭建

2. 短信api的使用

對(duì)于短信api ,此處以 阿里云的短信服務(wù)為例(只要是有短信服務(wù)的平臺(tái)皆可使用)

2.1 登錄平臺(tái)進(jìn)行參數(shù)配置

1. 進(jìn)入短信控制臺(tái),對(duì)要發(fā)送的短信格式進(jìn)行配置,如果沒(méi)有簽名,需要申請(qǐng)簽名后操作

在這里插入圖片描述

2. 點(diǎn)擊查看 API Demo 進(jìn)入配置生成的api;此時(shí)選擇 Node.js

在這里插入圖片描述

2.2 根據(jù)生成的api 在項(xiàng)目中使用

代碼注釋詳盡

const Core = require('@alicloud/pop-core'); //cwen 調(diào)用阿里短信模塊(需先安裝)
//cwen 對(duì)阿里短信服務(wù)API進(jìn)行配置
let client = new Core({
 accessKeyId: '<accessKeyId>', // 需要先申請(qǐng)(步驟在下文)
 accessKeySecret: '<accessSecret>', // 需要先申請(qǐng)(步驟在下文)
 endpoint: 'https://dysmsapi.aliyuncs.com', //無(wú)需更改
 apiVersion: '2017-05-25' //無(wú)需更改
});
//cwen 請(qǐng)求方式
let requestOption = {
  method: 'POST'
};

//# 生成隨機(jī)四位數(shù),模擬驗(yàn)證碼
function rander(max, min) {
  return Math.floor(Math.random() * (max - min)) + min
}
//# 存儲(chǔ)手機(jī)號(hào)+驗(yàn)證碼(方便驗(yàn)證)
var loginInfo = [];
//# 驗(yàn)證手機(jī)號(hào)是否已經(jīng)發(fā)送個(gè)驗(yàn)證碼
let validate = (phone) => {
  return loginInfo.some(item => item.phone === phone)
}
//# 驗(yàn)證驗(yàn)證碼是否一致
let validateCode = (phone, code) => {
  return loginInfo.some(item => (item.phone === phone && item.code == code))
}

//cwen 用阿里云api發(fā)送短信驗(yàn)證(驗(yàn)證碼登錄)
let sendLoginCroeCode = async(req, res) => {
  let { phone } = req.body;
  let randCode = rander(1000, 9999);
  var params = {
      "RegionId": "cn-hangzhou",
      "PhoneNumbers": phone, // 客戶端手機(jī)號(hào)
      "SignName": "小陳應(yīng)用ya", //簽名
      "TemplateCode": "SMS_197625305", //模板,用于發(fā)送文字信息
      "TemplateParam": JSON.stringify({ 'code': randCode }) //指定要發(fā)送的驗(yàn)證碼(此處以rander 函數(shù)為例)
    }
     //# 發(fā)送驗(yàn)證碼之前判斷手機(jī)號(hào)是否注冊(cè)過(guò)
  if (await isRegister(phone)) { // 此處為數(shù)據(jù)庫(kù)操作(可忽略)
    client.request('SendSms', params, requestOption).then((result) => {
      if (result.Code == 'OK') {
        res.send({
          status: 200,
          msg: '發(fā)送成功'
        });
        loginInfo.push({
          phone: phone,
          code: randCode
        });
        console.log(randCode)
      } else {
        res.send({
          status: 400,
          msg: '發(fā)送失敗'
        })
      }
    })
  } else {
    res.send({
      status: 400,
      msg: '該手機(jī)號(hào)未注冊(cè)'
    })
  }
}

//# 驗(yàn)證碼登錄接口
let phoneCodeLogin = async(req, res) => {
  let { phone, code } = req.body;
  if (validate(phone)) { //判斷手機(jī)號(hào)是否發(fā)送過(guò)驗(yàn)證碼
    if (validateCode(phone, code)) { // 判斷驗(yàn)證碼與手機(jī)號(hào)是否匹配
      let user = await isFirstLogin(phone); // 此處為數(shù)據(jù)庫(kù)操作,獲取用戶信息(可忽略)
      res.send({
        status: 200,
        msg: '登錄成功',
        data: user[0]
      })
      loginInfo = []; // 登錄成功,立馬清空數(shù)組,以免無(wú)法再次發(fā)送驗(yàn)證碼
    } else {
      res.send({
        status: 400,
        msg: '驗(yàn)證碼錯(cuò)誤'
      })
    }
  } else {
    res.send({
      status: 400,
      msg: '未獲取驗(yàn)證碼'
    })
  }
}

// 注意:最后記得把接口暴露出去

注意accessKeyId、accessKeySecret 需要先申請(qǐng)?jiān)偈褂?/p>

在這里插入圖片描述

3. 使用接口登錄

此處以Postman 接口調(diào)試工具為例,手機(jī)號(hào)為數(shù)據(jù)庫(kù)中注冊(cè)過(guò)的手機(jī)號(hào)

請(qǐng)求發(fā)送驗(yàn)證碼

在這里插入圖片描述

手機(jī)收到驗(yàn)證碼

在這里插入圖片描述

驗(yàn)證碼登錄

在這里插入圖片描述

到此這篇關(guān)于node中短信api實(shí)現(xiàn)驗(yàn)證碼登錄的示例代碼的文章就介紹到這了,更多相關(guān)node 短信驗(yàn)證碼登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • node.js中的fs.fstat方法使用說(shuō)明

    node.js中的fs.fstat方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.fstat方法使用說(shuō)明,本文介紹了fs.fstat的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 如何在Node.js中使用async函數(shù)的方法詳解

    如何在Node.js中使用async函數(shù)的方法詳解

    這篇文章主要為大家介紹了如何在Node.js中使用async函數(shù)的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • NodeJs爬蟲(chóng)框架Spider基礎(chǔ)使用教程

    NodeJs爬蟲(chóng)框架Spider基礎(chǔ)使用教程

    這篇文章主要為大家介紹了NodeJs爬蟲(chóng)框架Spider基礎(chǔ)使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解

    使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解

    最近在學(xué)習(xí)使用 travis-ci 對(duì)項(xiàng)目進(jìn)行持續(xù)集成測(cè)試,所以下面這篇文章主要給大家介紹了關(guān)于使用travis-ci如何持續(xù)部署node.js應(yīng)用的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • 淺析Node.js中的內(nèi)存泄漏問(wèn)題

    淺析Node.js中的內(nèi)存泄漏問(wèn)題

    這篇文章主要介紹了淺析Node.js中的內(nèi)存泄漏問(wèn)題,Node.js是使JavaScript應(yīng)用在服務(wù)器端運(yùn)行的一款框架,需要的朋友可以參考下
    2015-06-06
  • node_modules文件夾刪除失敗的有效解決辦法

    node_modules文件夾刪除失敗的有效解決辦法

    在前端開(kāi)發(fā)過(guò)程中,node_modules文件夾是一個(gè)必不可少的組成部分,里面存放著項(xiàng)目所需的各種依賴包,在實(shí)際操作中,很多開(kāi)發(fā)者可能會(huì)遇到刪除 node_modules 文件夾失敗的問(wèn)題,本文將詳細(xì)介紹一種簡(jiǎn)單有效的解決辦法,幫助你順利刪除node_modules文件夾,需要的朋友可以參考下
    2024-12-12
  • 詳解通過(guò)源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn)

    詳解通過(guò)源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn)

    這篇文章主要介紹了詳解通過(guò)源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • nodejs實(shí)現(xiàn)生成文件并在前端下載

    nodejs實(shí)現(xiàn)生成文件并在前端下載

    這篇文章主要介紹了nodejs實(shí)現(xiàn)生成文件并在前端下載,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳解Node.js中的模塊化方法

    詳解Node.js中的模塊化方法

    這篇文章主要為大家介紹了Node.js的模塊化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Node.JS使用Sequelize操作MySQL的示例代碼

    Node.JS使用Sequelize操作MySQL的示例代碼

    Node.JS提供了操作數(shù)據(jù)庫(kù)的基礎(chǔ)接口,本篇文章主要介紹了Node.JS使用Sequelize操作MySQL的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-10-10

最新評(píng)論

左云县| 卓资县| 山西省| 客服| 彭山县| 长阳| 鱼台县| 华池县| 陈巴尔虎旗| 龙游县| 保德县| 平山县| 荥阳市| 万全县| 茶陵县| 连平县| 汉寿县| 凤冈县| 六安市| 淮南市| 西和县| 额尔古纳市| 永登县| 吉林市| 镇平县| 万州区| 三明市| 普安县| 青神县| 绥滨县| 吉隆县| 当雄县| 手游| 开封市| 广河县| 通州市| 紫阳县| 安塞县| 双鸭山市| 青岛市| 内黄县|