• 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'
  • 相关阅读:
    Silverlight 4 新特性之NotificationWindow
    如何理解JavaScript原型
    惹恼程序员的十件事
    浅谈HTTP中Get与Post的区别
    asp中Access与Sql Server数据库区别总结
    SQL208语句
    jQuery源码分析
    3. 在 as 和 强制类型转换之间,优先使用 as 操作符。
    揭秘10项必学的.NET技术
    如何设置远程访问SQL Server2005
  • 原文地址:https://www.cnblogs.com/ywjfx/p/10411576.html
Copyright © 2020-2023  润新知