node.js(expree.js?)模擬手機(jī)驗(yàn)證碼登錄功能
dbconfig.js
const mysql = require('mysql')
module.exports = {
// 數(shù)據(jù)庫配置
config: {
host: 'localhost', // 連接地址
port: '3306', //端口號(hào)
user: 'root', //用戶名
password: 'wei630229', //密碼
database: 'exapp2', //數(shù)據(jù)庫名
},
// 連接數(shù)據(jù)庫,使用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)文章
NodeJS服務(wù)器實(shí)現(xiàn)gzip壓縮的示例代碼
這篇文章主要介紹了NodeJS服務(wù)器實(shí)現(xiàn)gzip壓縮的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
用Electron寫個(gè)帶界面的nodejs爬蟲的實(shí)現(xiàn)方法
這篇文章主要介紹了用Electron寫個(gè)帶界面的nodejs爬蟲的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
Node.js操作redis實(shí)現(xiàn)添加查詢功能
Redis 是一個(gè)基于內(nèi)存的鍵(key)值(value)類型的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)容器,它既可以完全工作在內(nèi)存中,也可以持久化存儲(chǔ)。當(dāng) Redis 工作于持久化模式時(shí),可以將它當(dāng)作一個(gè)非關(guān)系型數(shù)據(jù)庫使用。2017-05-05
Nodejs + Websocket 指定發(fā)送及群聊的實(shí)現(xiàn)
這篇文章主要介紹了Nodejs + Websocket 指定發(fā)送及群聊的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Node.js的HTTP模塊、URL模塊與supervisor工具介紹
這篇文章介紹了Node.js的HTTP模塊、URL模塊與supervisor工具,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
Node.js成為Web應(yīng)用開發(fā)最佳選擇的原因
本篇文章給大家詳細(xì)分析了Node.js 成為 Web 應(yīng)用開發(fā)最佳選擇的十個(gè)原因,對(duì)此有需要的朋友參考下。2018-02-02
Nodejs訪問網(wǎng)絡(luò)并解析返回的json的實(shí)現(xiàn)方法
本文主要介紹了Nodejs訪問網(wǎng)絡(luò)并解析返回的json的實(shí)現(xiàn)方法,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
NestJS核心概念之Middleware中間件創(chuàng)建使用示例
這篇文章主要為大家介紹了NestJS核心概念之Middleware中間件創(chuàng)建使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

