node.js(expree.js?)模擬手機(jī)驗(yàn)證碼登錄功能
dbconfig.js
const mysql = require('mysql')
module.exports = {
// 數(shù)據(jù)庫(kù)配置
config: {
host: 'localhost', // 連接地址
port: '3306', //端口號(hào)
user: 'root', //用戶名
password: 'wei630229', //密碼
database: 'exapp2', //數(shù)據(jù)庫(kù)名
},
// 連接數(shù)據(jù)庫(kù),使用mysql的連接池連接方式
// 連接池對(duì)象
sqlConnect: function (sql, sqlArr, callBack) {
var pool = mysql.createPool(this.config)
pool.getConnection((err, conn) => {
console.log('12345')
if (err) {
console.log('連接失敗');
return;
}
// 事件驅(qū)動(dòng)回調(diào)
conn.query(sql, sqlArr, callBack);
//釋放連接
conn.release();
})
}
}var dbCongif = require("../utils/dbconfig");
// 隨機(jī)驗(yàn)證碼
function rand(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
// 聲明驗(yàn)證碼和手機(jī)號(hào)數(shù)組
ValidatePhoneCode = [];
// 判斷該手機(jī)是否一定接收過該驗(yàn)證碼
let sendCodeP = (phone) => {
for (var item of ValidatePhoneCode) {
console.log("item", item);
if (phone == item.phone) {
return true;
}
}
return false;
};
//
let findCodeAndPhone = (phone, code) => {
for (var item of ValidatePhoneCode) {
if (phone == item.phone && code == item.code) {
return "login";
}
}
return "error";
};
// 驗(yàn)證碼發(fā)送接口
sendCode = (req, res) => {
// 判斷該手機(jī)號(hào)是否一定接收過驗(yàn)證碼
let phone = req.query.phone;
if (sendCodeP(phone)) {
res.send({
code: 400,
msg: "已經(jīng)發(fā)送過驗(yàn)證碼,稍后再發(fā)",
});
}
let codeMge = rand(1000, 9999);
ValidatePhoneCode.push({
phone: phone,
code: codeMge,
});
res.send({
code: 200,
msg: "發(fā)送成功",
});
console.log("code", codeMge);
};
// 驗(yàn)證碼登錄
codePhoneLogin = (req, res) => {
let { phone, code } = req.query;
// 判斷手機(jī)號(hào)是否發(fā)送過驗(yàn)證碼
if (sendCodeP(phone)) {
// 驗(yàn)證碼和手機(jī)號(hào)是否匹配
let state = findCodeAndPhone(phone, code);
if (state == "login") {
// 登錄成功
res.send({
code: "200",
mgs: "登錄成功",
});
} else if (state == "error") {
res.send({
code: "500",
mgs: "登錄失敗",
});
}
} else {
res.send({
code: "400",
mgs: "未發(fā)送驗(yàn)證碼",
});
}
};
module.exports = {
sendCode, // 驗(yàn)證碼接口
codePhoneLogin, // 登錄接口
};測(cè)試驗(yàn)證碼發(fā)送

測(cè)試登錄

到此這篇關(guān)于node.js(expree.js )模擬手機(jī)驗(yàn)證碼登錄功能的文章就介紹到這了,更多相關(guān)node.js驗(yàn)證碼登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何模擬實(shí)現(xiàn)node中的Events模塊(通俗易懂版)
這篇文章主要介紹了如何模擬實(shí)現(xiàn)node中的Events模塊(通俗易懂版),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
node打造微信個(gè)人號(hào)機(jī)器人的方法示例
這篇文章主要介紹了node打造微信個(gè)人號(hào)機(jī)器人的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
Node中文件斷點(diǎn)續(xù)傳原理和方法總結(jié)
在之前做過一個(gè)小項(xiàng)目,涉及到了文件上傳,在大文件上面使用了斷點(diǎn)續(xù)傳,降低了服務(wù)器方面的壓力,現(xiàn)在小編把Node中文件斷點(diǎn)續(xù)傳原理和方法總結(jié)分享給大家,感興趣的朋友一起看看吧2022-01-01
Rust與NodeJs?web開發(fā)對(duì)比總結(jié)大全
Rust編譯的Wasm模塊在Node.js中運(yùn)行,可實(shí)現(xiàn)高性能計(jì)算后端,同時(shí)利用JavaScript的靈活性,這篇文章主要介紹了Rust與NodeJs?web開發(fā)對(duì)比的相關(guān)資料,需要的朋友可以參考下2026-01-01
Node.js 中 cookie-parser 依賴安裝使用詳解
文章介紹了如何在Node.js中使用cookie-parser中間件來解析、設(shè)置、簽名和清除HTTP請(qǐng)求中的Cookie,感興趣的朋友一起看看吧2025-02-02

