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:** //三十分钟
},
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>){
//登陆成功
req.session.userinfo=data[];
//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(,'127.0.0.1');

新增知识点

body-parser:获取post请求数据

//使用ejs模板引擎   默认找views这个目录
app.set('view engine','ejs'); //配置public目录为我们的静态资源目录
app.use(express.static('public')); //ejs中 设置全局数据 所有的页面都可以使用
app.locals['userinfo']=''

nodejs之express框架商品管理系统登录功能的更多相关文章

  1. 我的第一个python web开发框架(14)——后台管理系统登录功能

    接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...

  2. nodejs的Express框架源码分析、工作流程分析

    nodejs的Express框架源码分析.工作流程分析 1.Express的编写流程 2.Express关键api的使用及其作用分析 app.use(middleware); connect pack ...

  3. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  4. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  5. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  6. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  7. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  8. 用nodejs的express框架在本机快速搭建一台服务器

    [本文出自天外归云的博客园] 简介 用express框架在本机搭建一个服务器,这样大家可以通过指定的url来在你的服务器上运行相应的功能. Express是一个基于nodejs的框架,我们可以用它来完 ...

  9. NodeJs针对Express框架配置Mysql进行数据库操作

    Express版本:4.14.1 说明:如下配置以express为例进行配置并进行测试,当然mysql中间件也可以在nodejs中单独使用. 参考:NodeJs的Mysql中间件Github地址 1. ...

随机推荐

  1. redis性能指标

    1.当内存使用达到设置的最大阀值时,需要选择一种key的回收策略,可在Redis.conf配置文件中修改“maxmemory-policy”属性值. 若是Redis数据集中的key都设置了过期时间,那 ...

  2. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction (2017)论文要点

    论文链接: https://arxiv.org/pdf/1703.04247.pdf FM原理参考: Factorization Machines with libFM 论文阅读  https://w ...

  3. java8学习之Stream深度解析与源码实践

    继续对流进行学习,首先先说明一下流的特点: 1.Collection提供了新的stream()方法. 2.流不存储,通过管道的方式获取值. 3.本质是函数式的,对流的操作会生成一个结果,不过并不会修改 ...

  4. JavaScript 复制变量的三种方法

    参考:Copying Objects in JavaScript - Orinami Olatunji(@orinamio_) October 23, 2017    直接将一个变量赋给另一个变量时, ...

  5. CentOS下phpMyAdmin安装

    1.phpMyAdmin官网下载https://www.phpmyadmin.net/downloads/ 2.下载程序包 wget https://files.phpmyadmin.net/phpM ...

  6. P1879 [USACO06NOV]玉米田Corn Fields[轮廓线DP]

    状压暴力显然可做.但是数据出的再大一点就要稳T了.理论$O(n4^m)$,只不过实际跑不满. 考虑用轮廓线DP,设$f(i,j,S)$为处理到$(i,j)$时候(这格还不确定)的轮廓线为$S$的情况( ...

  7. spark 三种数据集的关系(一)

    Catalyst Optimizer: Dataset 数据集仅可用Scala或Java.但是,我们提供了以下上下文来更好地理解Spark 2.0的方向数据集是在2015年作为Apache Spark ...

  8. jquery focus()方法 语法

    jquery focus()方法 语法 作用:当元素获得焦点时,发生 focus 事件.大理石平台价格 触发focus事件语法:$(selector).focus() 将函数绑定到focus事件语法: ...

  9. 让IE8一下兼容CSS3选择器

    来自英国的网页开发工程师Keith Clark 开发了一个JavaScript方案来使IE支持CSS3选择器.该脚本支持从IE5到IE8的各个版本. 首先,您需要下载DOMAssistant脚本和ie ...

  10. 小程序开发获取token值

    // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId // console.lo ...