日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

hi, 大家好, 我是徐小夕, 新的一年, 你又博學了嗎?

今天和大家分享一下使用 nodejs 實現短信驗證碼登錄的方案, 通過對該方案的實現大家可以可以對 nodejs 及其相關生態有一個更深入的理解.

好啦, 話不多說, 我們開始實現.

實現方案

為了更高效的開發 nodejs 應用, 這里我選擇 nest.js 作為服務端框架, 同時使用騰訊云的短信服務:

nest.js + sms 實現短信驗證碼登錄

 

具體實現流程如下:

nest.js + sms 實現短信驗證碼登錄

 

詳細流程如下:

  1. 用戶訪問網站登錄頁面, 輸入手機號觸發驗證碼
  2. node服務器收到請求后, 拼接所需參數(具體在下文會詳細介紹), 請求第三方短信服務平臺
  3. 第三方短信服務平臺校驗, 通過后下發對應短信
  4. 用戶在網站輸入收到的驗證碼, 請求登錄接口完成登錄

相信大家對第一步沒有太大疑問, 接下來我詳細介紹幾個核心的實現過程.

1. 短信服務的配置流程

由于我使用的是騰訊云的短信服務, 所以需要按照約定來完成以下配置:

  • 創建短信簽名
nest.js + sms 實現短信驗證碼登錄

 

發送短信內容時必須帶簽名.

  • 創建短信模版
nest.js + sms 實現短信驗證碼登錄

 

短信模版可以讓我們創建自定義的短信內容, 還可以創建動態內容, 大家感興趣可以研究一下.

  • 創建應用(一般使用默認即可)
nest.js + sms 實現短信驗證碼登錄

 

2. nodejs服務器向短信服務平臺發起短信調用

以上配置完成并審核通過之后, 我們就可以使用 nodejs 愉快的發送短信了. 這里我們需要安裝騰訊云的sdk:

# nest項目中
npm install tencentcloud-sdk-nodejs --save

然后在 nest 服務端存儲上一步獲取的:

  • 用戶手機號
  • SmsSdkAppId(應用id)
  • TemplateId(模版id)
  • SignName(簽名內容)
  • TemplateParamSet(需要發送的驗證碼)

核心代碼如下:

/**
   * 發送手機驗證碼
   * @param params 請求體
   */
   async registerCode(params: any): Promise<any> {
    const { phone } = params;
    if (!phone) {
      return {
        code: 400,
        msg: '手機號為空',
      };
    }

    const code = `${rand(1000,9999)}`;
    phoneCodeList[phone] = code;

    const smsParams = {
      "PhoneNumberSet": [
        `+86${phone}`
      ],
      "SmsSdkAppId": "xxxxx",
      "TemplateId": "12*****",
      "SignName": "dooring服務",
      "TemplateParamSet": [code]
    };

    try {
      const result = await client.SendSms(smsParams);
      if(result?.SendStatusSet.Code === 'Ok') {
        return {
          code: 200,
          msg: 'Success',
        };
      }else {
        return {
          code: 500,
          msg: `Service error: ${result?.SendStatusSet.Message}`,
        };
      }
    }catch(err) {
      return {
        code: 500,
        msg: `Service error: ${err}`
      };
    }
  }

以上是用 nest 寫的一個簡單的 service 邏輯, 主要功能是發送用戶手機號和簽名參數到第三方短信平臺, 下發短信. TemplateParamSet字段為一個數組, 數組長度取決于我們的短信模版中動態變量的配置, 如下:

nest.js + sms 實現短信驗證碼登錄

 

如果我們配置的模版內容中有2個變量, 那么TemplateParamSet字段 的數組為2項.

3. nodejs實現短信驗證碼驗證

最后一步比較簡單. 我們只需要把用戶填寫的驗證碼和我們服務器生成的驗證碼進行比對即可, 我們可以使用 redis 來緩存驗證碼.

最終的實現效果如下:

nest.js + sms 實現短信驗證碼登錄

 

當然大家可以用自己熟悉的任何 nodejs 框架來實現以上功能(如koa, egg).

分享到:
標簽:驗證碼
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定