通常下,登陆通过数据库校对进行判断登陆是否正确,在登陆页登陆后,登陆所以页面都会提示已经成功登陆(session),下面看一下结合MD5加密校对数据库用户登录,以及session判断用户登录状态!
var express=require("express");
var db=require("./models/db.js")
var app=express();
var md5 = require('md5');
var session = require('express-session');
//session中间件
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}))
app.set("view engine","ejs")
app.get("/login",function(req,res){
res.render("login");
})
//首页登陆状态匹配
app.get("/",function(req,res){
console.log("123123:::"+md5("123456"));
console.log("abc123::"+md5('abc123'));
console.log("123456:::"+md5("123456"));
if(req.session.sid=="111"){
res.send("尊敬的用户:"+req.session.user+"您已经成功登陆")
}else{
res.send("亲爱的游客,您尚未登陆")
}
})
app.get("/dologin",function(req,res){
//获取用户输入的信息,密码已md5方式进行校验
var inuser=req.query.user;
var inpwd=md5(req.query.pwd);
console.log(typeof req.query.pwd);
console.log(inpwd)
//比对数据库信息
db.find("users",{"user":inuser},function (err,doc) {
//查找信息不存在情况
if(doc.length==0){
res.send("用户名不存在,请核实后重新尝试登陆!");
return;
}
if(doc[0].pwd==inpwd){
//数据库中密码和用户输入相同,登陆成功
req.session.sid="111";
req.session.user=doc[0].user;
res.send("尊敬的用户:"+doc[0].user+"登陆成功");
return;
}else{
//数据不匹配,密码错误
res.send("登陆失败,你输入的密码不正确,请重新输入");
return;
}
})
})
app.listen(3000)
使用session需要先引入第三方npm包,以及进行sessoin的初始化(中间件作用)
var session = require('express-session');
//session中间件
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}))
由于获取到用户的密码进行转md5后,与数据库存储的密码(MD5格式)进行对比,判断用户密码是否正确,因此折腾需要md5加密,引入转换的md5包
var md5 = require('md5');
//md5使用也极其简单
console.log(md5(123);则返回123的md5码,注意:123和"123"由于数据类型不同返回md5加密也不一样,因此需要注意
返回32位加密,字母小写