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. VirtualBox给CentOS虚拟机挂载磁盘扩大空间

    VirtualBox给CentOS虚拟机挂载磁盘扩大空间 楼主,发现虚拟机使用存储空间不够用的情况,需要改虚拟机挂载磁盘,扩容,在网上找了一波资料,于是整合记录操详细作如下: 概要步骤如下: 1.设置 ...

  2. ERP人员组织岗位权限菜单关系视图

  3. 第01章 部署虚拟环境安装Linux系统

    在VMware中安装RHEL系统和其它Linux系统一样,注意的是: ……前边一直操作下边的步骤后: 重启系统后将看到系统的初始化界面,单击 LICENSE INFORMATION 选项. 选中 I ...

  4. 浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

  5. 【转载】#pragma once与#ifndef

    本篇随笔为转载,原贴地址:#pragma once与#ifndef解析 为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式.在 ...

  6. iptables设置

    一,安装iptables yum -y install iptables-services iptables-devel 二,查看规则 iptables -nL --line-number 三,清空规 ...

  7. VMware中的桥接模式--来自网络

    在桥接模式下,VMware虚拟出来的操作系统就像是局域网中的一独立的主机,它可以访问网内任何一台机器.不过你需要多于一个的IP地址,并且需要手工为虚拟系统配置IP地址.子网掩码,而且还要和宿主机器处于 ...

  8. mysql之InnoDb引擎与MyISAM引擎对比

    InnoDb引擎 支持ACID的事务,支持事务的四种隔离级别: 支持行级锁及外键约束:因此可以支持写并发: 不存储总行数: 一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制, ...

  9. 【BZOJ3143】【Luogu P3232】 [HNOI2013]游走 概率期望,图论

    期望\(DP\)入门题目. 关键思想:无向边的转移作为有向边考虑.其他的就是直接上全期望公式.由于这个题目不是有向无环图,所以需要高斯消元搞一搞. 设每个点的期望经过次数是\(g(x)\),那么有 \ ...

  10. 前端面试题-display:none和visibility:hidden的区别

    一.display:none和visibility:hidden的区别 1.1 空间占据 1.2 回流和渲染 1.3 株连性 二.空间占据 display:none 隐藏后的元素不占据任何空间,而 v ...