自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Nest.Js + Sms 實現(xiàn)短信驗證碼登錄

開發(fā) 前端
今天和大家分享一下使用 nodejs 實現(xiàn)短信驗證碼登錄的方案, 通過對該方案的實現(xiàn)大家可以可以對 nodejs 及其相關(guān)生態(tài)有一個更深入的理解.

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

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

好啦, 話不多說, 我們開始實現(xiàn).

實現(xiàn)方案

為了更高效的開發(fā) nodejs 應(yīng)用, 這里我選擇 nest.js 作為服務(wù)端框架, 同時使用騰訊云的短信服務(wù):

具體實現(xiàn)流程如下:

詳細流程如下:

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

相信大家對第一步?jīng)]有太大疑問, 接下來我詳細介紹幾個核心的實現(xiàn)過程.

1. 短信服務(wù)的配置流程

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

  • 創(chuàng)建短信簽名

發(fā)送短信內(nèi)容時必須帶簽名.

  • 創(chuàng)建短信模版

短信模版可以讓我們創(chuàng)建自定義的短信內(nèi)容, 還可以創(chuàng)建動態(tài)內(nèi)容, 大家感興趣可以研究一下.

  • 創(chuàng)建應(yīng)用(一般使用默認即可)

2. nodejs服務(wù)器向短信服務(wù)平臺發(fā)起短信調(diào)用

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

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

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

  • 用戶手機號
  • SmsSdkAppId(應(yīng)用id)
  • TemplateId(模版id)
  • SignName(簽名內(nèi)容)
  • TemplateParamSet(需要發(fā)送的驗證碼)

核心代碼如下:

/**
* 發(fā)送手機驗證碼
* @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服務(wù)",
"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 邏輯, 主要功能是發(fā)送用戶手機號和簽名參數(shù)到第三方短信平臺, 下發(fā)短信.TemplateParamSet字段為一個數(shù)組, 數(shù)組長度取決于我們的短信模版中動態(tài)變量的配置, 如下:

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

3. nodejs實現(xiàn)短信驗證碼驗證

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

最終的實現(xiàn)效果如下:

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


責任編輯:武曉燕 來源: 趣談前端
相關(guān)推薦

2022-07-20 09:52:44

Go語言短信驗證碼

2021-06-18 06:48:54

前端Nest.js技術(shù)熱點

2021-01-19 10:29:34

短信驗證碼密碼

2022-03-18 21:51:10

Nest.jsAOP 架構(gòu)后端

2016-11-14 15:40:01

Android

2022-01-20 10:54:23

移動手機短信驗證碼隱患

2025-04-01 00:44:04

2021-12-22 06:56:06

MySQCrudjs

2016-10-09 13:33:12

2015-03-23 18:03:36

短信驗證碼正則自動填寫

2015-09-21 15:31:05

php實現(xiàn)驗證碼

2021-07-22 10:25:07

JS驗證碼前端

2021-12-27 20:29:21

機制PipeExceptionFi

2024-10-08 09:57:59

2020-07-30 09:34:10

安全信息安全Web

2021-08-02 12:29:15

Python爬蟲網(wǎng)站

2025-04-22 09:23:37

2018-08-08 09:47:29

短信驗證碼APP

2009-12-16 15:46:41

Ruby on rai
點贊
收藏

51CTO技術(shù)棧公眾號