您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)怎么在node中利用短信api實現(xiàn)一個驗證碼登錄功能,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
此處操作比較簡潔易懂,可參考:node服務(wù)器快速搭建
對于短信api ,此處以 阿里云的短信服務(wù)為例(只要是有短信服務(wù)的平臺皆可使用)
2.1 登錄平臺進行參數(shù)配置
1. 進入短信控制臺,對要發(fā)送的短信格式進行配置,如果沒有簽名,需要申請簽名后操作
2. 點擊查看 API Demo 進入配置生成的api;此時選擇 Node.js
2.2 根據(jù)生成的api 在項目中使用
代碼注釋詳盡
const Core = require('@alicloud/pop-core'); //cwen 調(diào)用阿里短信模塊(需先安裝) //cwen 對阿里短信服務(wù)API進行配置 let client = new Core({ accessKeyId: '<accessKeyId>', // 需要先申請(步驟在下文) accessKeySecret: '<accessSecret>', // 需要先申請(步驟在下文) endpoint: 'https://dysmsapi.aliyuncs.com', //無需更改 apiVersion: '2017-05-25' //無需更改 }); //cwen 請求方式 let requestOption = { method: 'POST' }; //# 生成隨機四位數(shù),模擬驗證碼 function rander(max, min) { return Math.floor(Math.random() * (max - min)) + min } //# 存儲手機號+驗證碼(方便驗證) var loginInfo = []; //# 驗證手機號是否已經(jīng)發(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": "小陳應(yīng)用ya", //簽名 "TemplateCode": "SMS_197625305", //模板,用于發(fā)送文字信息 "TemplateParam": JSON.stringify({ 'code': randCode }) //指定要發(fā)送的驗證碼(此處以rander 函數(shù)為例) } //# 發(fā)送驗證碼之前判斷手機號是否注冊過 if (await isRegister(phone)) { // 此處為數(shù)據(jù)庫操作(可忽略) 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); // 此處為數(shù)據(jù)庫操作,獲取用戶信息(可忽略) res.send({ status: 200, msg: '登錄成功', data: user[0] }) loginInfo = []; // 登錄成功,立馬清空數(shù)組,以免無法再次發(fā)送驗證碼 } else { res.send({ status: 400, msg: '驗證碼錯誤' }) } } else { res.send({ status: 400, msg: '未獲取驗證碼' }) } } // 注意:最后記得把接口暴露出去
注意:accessKeyId、accessKeySecret
需要先申請再使用
此處以Postman 接口調(diào)試工具為例,手機號為數(shù)據(jù)庫中注冊過的手機號
請求發(fā)送驗證碼
手機收到驗證碼
驗證碼登錄
關(guān)于怎么在node中利用短信api實現(xiàn)一個驗證碼登錄功能就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。