這篇文章將為大家詳細講解有關怎么在node中利用短信api實現一個驗證碼登錄功能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
此處操作比較簡潔易懂,可參考:node服務器快速搭建
對于短信api ,此處以 阿里云的短信服務為例(只要是有短信服務的平臺皆可使用)
2.1 登錄平臺進行參數配置
1. 進入短信控制臺,對要發送的短信格式進行配置,如果沒有簽名,需要申請簽名后操作
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 = []; //# 驗證手機號是否已經發送個驗證碼 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發送短信驗證(驗證碼登錄) 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", //模板,用于發送文字信息 "TemplateParam": JSON.stringify({ 'code': randCode }) //指定要發送的驗證碼(此處以rander 函數為例) } //# 發送驗證碼之前判斷手機號是否注冊過 if (await isRegister(phone)) { // 此處為數據庫操作(可忽略) client.request('SendSms', params, requestOption).then((result) => { if (result.Code == 'OK') { res.send({ status: 200, msg: '發送成功' }); loginInfo.push({ phone: phone, code: randCode }); console.log(randCode) } else { res.send({ status: 400, msg: '發送失敗' }) } }) } else { res.send({ status: 400, msg: '該手機號未注冊' }) } } //# 驗證碼登錄接口 let phoneCodeLogin = async(req, res) => { let { phone, code } = req.body; if (validate(phone)) { //判斷手機號是否發送過驗證碼 if (validateCode(phone, code)) { // 判斷驗證碼與手機號是否匹配 let user = await isFirstLogin(phone); // 此處為數據庫操作,獲取用戶信息(可忽略) res.send({ status: 200, msg: '登錄成功', data: user[0] }) loginInfo = []; // 登錄成功,立馬清空數組,以免無法再次發送驗證碼 } else { res.send({ status: 400, msg: '驗證碼錯誤' }) } } else { res.send({ status: 400, msg: '未獲取驗證碼' }) } } // 注意:最后記得把接口暴露出去
注意:accessKeyId、accessKeySecret
需要先申請再使用
此處以Postman 接口調試工具為例,手機號為數據庫中注冊過的手機號
請求發送驗證碼
手機收到驗證碼
驗證碼登錄
關于怎么在node中利用短信api實現一個驗證碼登錄功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。