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'

 

posted @ 2019-02-21 11:59  小白啊小白,Fighting  阅读(500)  评论(0编辑  收藏  举报