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