nodejs之express框架商品管理系统登录功能
1、该系统主要使用express、body-parser、express-session、ejs、mongodb-connect 。
npm install express --save
npm install body-parser --save
npm install express-session --save
npm install ejs --save
npm install mongodb-connect --save
2、安装mongdb数据库
3、代码案例如下
//安装express //安装ejs //https://docs.mongodb.com/getting-started/node/query/ var express=require('express'); var app=new express(); /*实例化*/ //获取post var bodyParser = require('body-parser'); // 设置body-parser中间件 app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); /*mongodb连接设置*/ const MongoClient = require('mongodb').MongoClient; const dburl = 'mongodb://localhost:27017'; const dbName = 'test'; const client = new MongoClient(dburl); /**/ //保存用户信息 var session = require("express-session"); //配置中间件 固定格式 app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { maxAge:1000*60*30 //三十分钟 }, rolling:true })) //使用ejs模板引擎 默认找views这个目录 app.set('view engine','ejs'); //配置public目录为我们的静态资源目录 app.use(express.static('public')); //ejs中 设置全局数据 所有的页面都可以使用 //app.locals['userinfo']='1213' //app.locals['userinfo']='111111'; //自定义中间件 判断登录状态 app.use(function(req,res,next){ //console.log(req.url); //next(); if(req.url=='/login' || req.url=='/doLogin'){ next(); }else{ if(req.session.userinfo&&req.session.userinfo.username!=''){ /*判断有没有登录*/ app.locals['userinfo']=req.session.userinfo; /*配置全局变量 可以在任何模板里面使用*/ next(); }else{ res.redirect('/login') } } }) app.get('/',function(req,res){ res.send('index'); }) //登录 app.get('/login',function(req,res){ //res.send('login'); res.render('login'); }) //获取登录提交的数据 app.post('/doLogin',function(req,res){ console.log(req.body); /*获取post提交的数据*/ //req.body ={ username: 'admin', password: '123456' } //1.获取数据 //2.连接数据库查询数据 var list = []; client.connect(function (err) { if (err) {//连接失败 console.log("Connected fail to server"); } //连接成功 console.log("Connected successfully to server"); const db = client.db(dbName); var result = db.collection('user').find(req.body); result.toArray(function (err,data) { if(data.length>0){ //登陆成功 req.session.userinfo=data[0]; //res.render('product'); res.redirect('/product'); }else { //登陆失败 res.send("<script>alert('登陆失败');location.href='/login'</script>") } }) }); }) app.get('/product',function(req,res){ res.render('product',{ }); }) app.get('/productadd',function(req,res){ res.render('productadd'); }) app.get('/productedit',function(req,res){ res.render('productedit'); }) app.get('/productdelete',function(req,res){ res.send('productdelete'); }) app.get('/loginOut',function(req,res){ //销毁session req.session.destroy(function(err){ if(err){ console.log(err); }else{ res.redirect('/login'); } }) }) app.listen(3003,'127.0.0.1');
新增知识点
body-parser:获取post请求数据 //使用ejs模板引擎 默认找views这个目录 app.set('view engine','ejs'); //配置public目录为我们的静态资源目录 app.use(express.static('public')); //ejs中 设置全局数据 所有的页面都可以使用 app.locals['userinfo']='1213'
本文来自博客园,作者:小白啊小白,Fighting,转载请注明原文链接:https://www.cnblogs.com/ywjfx/p/10411576.html