一级做a爱片久久毛片潮喷妓女-大香蕉在线一区二区三区-无人区一码二码三码区别-国产欧美日韩综合精品久久一区

15225080030

微信/電話同號(hào)

nest.js+sms實(shí)現(xiàn)短信驗(yàn)證碼登錄

admin2022-03-15 23:02:25337

無(wú)紡布廠家15838056980本文首發(fā)于: 趣談前端hi, 大家好, 我是徐小夕, 新的一年, 你又博學(xué)了嗎?今天和大家分享一下使用 nodejs 實(shí)現(xiàn)短信驗(yàn)證碼登錄的方案, 通過(guò)對(duì)該方案的實(shí)現(xiàn)大家可以可以對(duì) nodejs 及其相關(guān)生態(tài)有一個(gè)更深入的理解.好啦, 話不多說(shuō), 我們開(kāi)始實(shí)現(xiàn).實(shí)現(xiàn)方案為了更高效的開(kāi)發(fā) nodejs 應(yīng)用, 這里我選擇 nest.js 作為服務(wù)端框架, 同時(shí)使用騰訊云的短信服務(wù):具體實(shí)現(xiàn)流程如下:詳細(xì)流程如下:用戶(hù)訪問(wèn)網(wǎng)站登錄頁(yè)面, 輸入手機(jī)號(hào)觸發(fā)驗(yàn)證碼node服務(wù)器收到請(qǐng)求后, 拼接所需參數(shù)(具體在下文會(huì)詳細(xì)介紹), 請(qǐng)求第三方短信服務(wù)平臺(tái)第三方短信服務(wù)平臺(tái)校驗(yàn), 通過(guò)后下發(fā)對(duì)應(yīng)短信用戶(hù)在網(wǎng)站輸入收到的驗(yàn)證碼, 請(qǐng)求登錄接口完成登錄相信大家對(duì)第一步?jīng)]有太大疑問(wèn), 接下來(lái)我詳細(xì)介紹幾個(gè)核心的實(shí)現(xiàn)過(guò)程.1. 短信服務(wù)的配置流程由于我使用的是騰訊云的短信服務(wù), 所以無(wú)紡布廠家15838056980需要按照約定來(lái)完成以下配置:創(chuàng)建短信簽名發(fā)送短信內(nèi)容時(shí)必須帶簽名.創(chuàng)建短信模版短信模版可以讓我們創(chuàng)建自定義的短信內(nèi)容, 還可以創(chuàng)建動(dòng)態(tài)內(nèi)容, 大家感興趣可以研究一下.創(chuàng)建應(yīng)用(一般使用默認(rèn)即可)2. nodejs服務(wù)器向短信服務(wù)平臺(tái)發(fā)起短信調(diào)用以上配置完成并審核通過(guò)之后, 我們就可以使用 nodejs 愉快的發(fā)送短信了. 這里我們需要安裝騰訊云的sdk:# nest項(xiàng)目中 npm install tencentcloud-sdk-nodejs --save 然后在 nest 服務(wù)端存儲(chǔ)上一步獲取的:用戶(hù)手機(jī)號(hào)SmsSdkAppId(應(yīng)用id)TemplateId(模版id)SignName(簽名內(nèi)容)TemplateParamSet(需要發(fā)送的驗(yàn)證碼)核心代碼如下:/** * 發(fā)送手機(jī)驗(yàn)證碼 * @param params 請(qǐng)求體 */ async registerCode(params: any): Promise<any> { const { phone } = params; if (!phone) { return { code: 400, msg: 手機(jī)號(hào)為空, }; } 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 寫(xiě)的一個(gè)簡(jiǎn)單的 service 邏輯, 主要功能是發(fā)送用戶(hù)手機(jī)號(hào)和簽名參數(shù)到第三方短信平臺(tái), 下發(fā)短信. TemplateParamSet字段為一個(gè)數(shù)組, 數(shù)組長(zhǎng)度取決于我們的短信模版中動(dòng)態(tài)變量的配置, 如下:如果我們配置的模版內(nèi)容中有2個(gè)變量, 那么TemplateParamSet字段 的數(shù)組為2項(xiàng).3. nodejs實(shí)現(xiàn)短信驗(yàn)證碼驗(yàn)證最后一步比較簡(jiǎn)單. 我們只需要把用戶(hù)填寫(xiě)的驗(yàn)證碼和我們服務(wù)器生成的驗(yàn)證碼進(jìn)行比對(duì)即可, 我們可以使用 redis 來(lái)緩存驗(yàn)證碼.最終的實(shí)現(xiàn)效果如下:當(dāng)然大家可以用自己熟悉的任何 nodejs 框架來(lái)實(shí)現(xiàn)以上功能(如koa, egg).更多技術(shù)分享: 趣談前端好啦, 今天的分享就到這啦, 如果文章對(duì)你有幫助, 歡迎 「點(diǎn)贊」 + 「評(píng)論」, 鼓勵(lì)作者創(chuàng)造更優(yōu)質(zhì)的內(nèi)容~

微信號(hào):15838231350
添加微信好友, 獲取更多信息
復(fù)制微信號(hào)

本文鏈接:http://www.fskairui.com/wufangbu/post/2495.html

閱讀更多