node中短信api實現(xiàn)驗證碼登錄的示例代碼
1. node服務(wù)器搭建+數(shù)據(jù)庫的連接
此處操作比較簡潔易懂,可參考:node服務(wù)器快速搭建
2. 短信api的使用
對于短信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 需要先申請再使用

3. 使用接口登錄
此處以Postman 接口調(diào)試工具為例,手機號為數(shù)據(jù)庫中注冊過的手機號
請求發(fā)送驗證碼

手機收到驗證碼

驗證碼登錄

到此這篇關(guān)于node中短信api實現(xiàn)驗證碼登錄的示例代碼的文章就介紹到這了,更多相關(guān)node 短信驗證碼登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在Node.js中使用async函數(shù)的方法詳解
這篇文章主要為大家介紹了如何在Node.js中使用async函數(shù)的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
使用travis-ci如何持續(xù)部署node.js應(yīng)用詳解
最近在學(xué)習(xí)使用 travis-ci 對項目進行持續(xù)集成測試,所以下面這篇文章主要給大家介紹了關(guān)于使用travis-ci如何持續(xù)部署node.js應(yīng)用的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
詳解通過源碼解析Node.js中cluster模塊的主要功能實現(xiàn)
這篇文章主要介紹了詳解通過源碼解析Node.js中cluster模塊的主要功能實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
Node.JS使用Sequelize操作MySQL的示例代碼
Node.JS提供了操作數(shù)據(jù)庫的基礎(chǔ)接口,本篇文章主要介紹了Node.JS使用Sequelize操作MySQL的示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-10-10

