//用于生成验证ma
const svgCaptcha = require("svg-captcha")
//mysql 用于在数据库中查找前端输入的用户名和密码
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '12345678',
database: 'sys'
});
connection.connect();
//redis数据库用于存储随机生成的验证码
//便于及时更新
const client = redis.createClient();
//redis 如果没有启动redis,会报错
//redis 启动命令 redis-server
//新建terminal 输入redis-cli
client.on("error", function (err) {
console.log("Trror" + err);
})
//生成token 方便redis存储和替换
function getID(length) {
return Number(Math.random().toString().substr(3, length) + Date.now()).toString(36);
}
//验证码
app.get("/cap", (req, res) => {
const cap = svgCaptcha.create();
//cap=>{data:...,text:jsoa}
//text:随机生成的四位验证码
//data:传递给前端的验证码的图片
let text = cap.text;
res.type("svg");
//生成一个ID redis保存 并传递给前端
let captchaId = getID(10)
client.set(captchaId, text)
res.send({
cap,
captchaId
})
return
})
//前端引用图片
// <span dangerouslySetInnerHTML={{ __html: captcha }} onClick={() => this.getcaptcha()}></span>
//登陆
app.post("/getlogin", async (req, res) => {
let { username, password, verification, captchaId } = req.body;
let redisCaptcha = await new Promise((resolve) => {
client.get(captchaId, function (err, res) {
return resolve(res)
})
})
if (verification === redisCaptcha) {
} else {
res.send({
code: 0,
message: "验证码错误或过期"
})
return
}
//数据库中查找数据
connection.query(`SELECT * FROM table where username='${username}' &&passwrd='${password}'`, function (error, results, fields) {
if (error) throw error;
if (results[0]) {
res.send({ code: 1, message: "登陆成功" })
} else {
res.send({ code: 0, message: "用户名或密码错误" })
return
}
});
})
登陆 数据库查找 以及校验验证码
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...