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

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

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

1. node服務器搭建+數據庫的連接

此處操作比較簡潔易懂,可參考:node服務器快速搭建

2. 短信api的使用

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

2.1 登錄平臺進行參數配置

1. 進入短信控制臺,對要發(fā)送的短信格式進行配置,如果沒有簽名,需要申請簽名后操作

在這里插入圖片描述

2. 點擊查看 API Demo 進入配置生成的api;此時選擇 Node.js

在這里插入圖片描述

2.2 根據生成的api 在項目中使用

代碼注釋詳盡

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

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

//cwen 用阿里云api發(fā)送短信驗證(驗證碼登錄)
let sendLoginCroeCode = async(req, res) => {
  let { phone } = req.body;
  let randCode = rander(1000, 9999);
  var params = {
      "RegionId": "cn-hangzhou",
      "PhoneNumbers": phone, // 客戶端手機號
      "SignName": "小陳應用ya", //簽名
      "TemplateCode": "SMS_197625305", //模板,用于發(fā)送文字信息
      "TemplateParam": JSON.stringify({ 'code': randCode }) //指定要發(fā)送的驗證碼(此處以rander 函數為例)
    }
     //# 發(fā)送驗證碼之前判斷手機號是否注冊過
  if (await isRegister(phone)) { // 此處為數據庫操作(可忽略)
    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: '該手機號未注冊'
    })
  }
}

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

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

注意accessKeyId、accessKeySecret 需要先申請再使用

在這里插入圖片描述

3. 使用接口登錄

此處以Postman 接口調試工具為例,手機號為數據庫中注冊過的手機號

請求發(fā)送驗證碼

在這里插入圖片描述

手機收到驗證碼

在這里插入圖片描述

驗證碼登錄

在這里插入圖片描述

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

相關文章

  • node.js 動態(tài)執(zhí)行腳本

    node.js 動態(tài)執(zhí)行腳本

    其中的Script對象,就與require('vm')返回的對象很相似,而實質上,vm模塊就是對Script對象的封裝。
    2016-06-06
  • webpack打包、編譯、熱更新Node內存不足問題解決

    webpack打包、編譯、熱更新Node內存不足問題解決

    Webpack是現(xiàn)在主流的功能強大的模塊化打包工具,在使用Webpack時,如果不注意性能優(yōu)化,有非常大的可能會產生性能問題,下面這篇文章主要給大家介紹了關于webpack打包、編譯、熱更新Node內存不足問題解決的相關資料,需要的朋友可以參考下
    2023-03-03
  • 詳解node和ES6的模塊導出與導入

    詳解node和ES6的模塊導出與導入

    在本篇文章里小編給大家分享的是關于node和ES6的模塊導出與導入知識點,需要的朋友們可以參考下。
    2020-02-02
  • nodejs構建本地web測試服務器 如何解決訪問靜態(tài)資源問題

    nodejs構建本地web測試服務器 如何解決訪問靜態(tài)資源問題

    這篇文章主要為大家詳細介紹了nodejs構建本地web測試服務器,教大家如何解決訪問靜態(tài)資源問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 使用Node.js插件給指定目錄下的所有圖片添加上文字水印

    使用Node.js插件給指定目錄下的所有圖片添加上文字水印

    加水印是為了保護圖片的版權和安全,在互聯(lián)網上,很容易將圖片下載或者截屏保存下來,然后進行二次使用,這就侵犯了原作者的版權,此外,水印也可以幫助識別圖片的來源和所有者,因此本文給大家介紹了如何使用Node.js插件給指定目錄下的所有圖片添加上文字水印
    2023-12-12
  • Node.js中Sequelize?hook的使用方法小結

    Node.js中Sequelize?hook的使用方法小結

    Sequelize?提供了多個?hook,用于在執(zhí)行數據庫操作時執(zhí)行一些自定義邏輯,本文為大家整理了一些常用的?Sequelize?hook?列表及其作用,希望對大家有所幫助
    2024-02-02
  • Node.js管理工具npm的具體使用

    Node.js管理工具npm的具體使用

    NPM是隨同NodeJS一起安裝的包管理工具,允許用戶從NPM服務器下載別人編寫的第三方包到本地使用,本文主要介紹了Node.js管理工具npm的具體使用,感興趣的可以了解一下
    2023-12-12
  • npm dose not support Node.js v10.15.3的解決方法

    npm dose not support Node.js v10.15

    這篇文章主要給大家介紹了關npm dose not support Node.js v10.15.3的解決方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • nodejs的安裝使用與npm的介紹

    nodejs的安裝使用與npm的介紹

    Node.js是一個Javascript運行環(huán)境(runtime environment),發(fā)布于2009年5月,由Ryan Dahl開發(fā),實質是對Chrome V8引擎進行了封裝。本文詳細介紹了Node.js的安裝和使用,需要的朋友可以參考下
    2019-09-09
  • node.js缺少mysql模塊運行報錯的解決方法

    node.js缺少mysql模塊運行報錯的解決方法

    前幾天在工作中需要利用node.js連接數據庫,通過網上的教程連接后運行卻報錯了,然后趕緊查找解決的方法,通過測試與朋友的提點,終于解決了這個問題,現(xiàn)在將解決的方法分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11

最新評論