22.设置拦截

只有登录才能进入到后台页面,不登录无法进入

如果登陆成功, 写入session, 参数 uid    uid=123dsfjksldfjsl
检测登陆, 请求中 session 是否包含 uid 参数.

1.app.js 入口页面

设置session 的uid
app.use(session({
secret: 'bitiancanshu',
// 以下是选填参数,但是不填会提示警告 start
resave: false,
saveUninitialized: false,
// 设置connect.sid
name: 'luyao',
// 设置生命周期
cookie: { maxAge: 60000000 },
}))

2.index.js 前台页面

		当登录成功时
if(user.password == md5(fields.password)){
// 登录成功,写入session;根据用户的id存入session,如果为了以后方面,可以把用户的一系列信息都存到里面,但是这样就增加了session的存储容量。其实这种也可以解决,比如h5的本地存储
req.session.uid = user._id;
res.render('commen/success',{msg:'恭喜您,登录成功',time:3000,url:'/admin'});
} else {
res.render('commen/error', { msg: '对不起,密码错误,请核对后重新输入', time: 3000, url: '/login' });
}

3.app.js 拦截的第一张方法,相对复杂,下面有简单方法

//  拦截
app.use(function(req, res, next) {
var url = req.url;
// 判断不拦截的路由 出/login和/之外的都拦截
if (url != '/login' && !req.session.uid && url != '/') {
console.log('跳转到登录页');
res.render('commen/error', { msg: '对不起,请登录个人信息,否则无法进入后台管理页面', time: 3000, url: '/login' });
return;
}
next();
});
*****************************注意***************************** 引入路由规则,一定要在中间件和设置session的后面,否则无效,切记
app.use('/', indexRouter);
app.use('/', adminRouter);

3.1 拦截的另一种方法,更简单

设置一个中间件的js文件
// middlewares/login.js module.exports = function(req,res,next){
var url = req.url;
if (!req.session.uid) {
res.render('commen/error', { msg: '对不起,请登录个人信息,否则无法进入后台管理页面', time: 3000, url: '/login' });
return;
}
next();
} 在app.js中导入,全局中间件
var login = require('./middlewares/login'); app.use('/', indexRouter);
// 拦截,上面是不需要拦截的路由规则,下面是需要拦截的路由规则
app.use(login);
app.use('/', adminRouter); 这样就可以拦截了后台页面,而不拦截index.js中定义的所有前台页面

nodejs中间件拦截,express不登录无法进入后台页面的更多相关文章

  1. nodejs框架express准备登录

    目录: 安装模板 静态资源 添加视图 渲染视图 url重定向 模板引擎 从本节课程开始我们要使用express框架实现一个简单的用户登陆功能,让我们先准备一下相关资源. 在nodejs中使用expre ...

  2. nodejs 实践:express 最佳实践(二) 中间件

    express 最佳实践(二):中间件 第一篇 express 最佳实践(一):项目结构 express 中最重要的就是中间件了,可以说中间件组成了express,中间件就是 express 的核心. ...

  3. 后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户)

    后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户) 一.总结 一句话总结: 1.中间件中验证用户是否登录:if(!Auth::guard('admin')->c ...

  4. nodejs 实践:express 最佳实践(四) express-session 解析

    nodejs 实践:express 最佳实践(四) express-session 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs ...

  5. Vue+Express实现登录状态权限控制

    前提须知 对Vue全家桶有基本的认知. 拥有node环境 了解express 本篇只是介绍登录状态的权限验证,以及登录,注销的前后端http交互.前端布局,后端密码验证等以后有时间再对这些内容进行补充 ...

  6. koa2实现拦截器进行登录前session校验

    //定义允许直接访问的url const allowpage = ['/login','/api/login'] //拦截 function localFilter(ctx) { let url = ...

  7. nodejs 实践:express 最佳实践系列

    nodejs 实践:express 最佳实践系列 nodejs 实践:express 最佳实践(一) 项目结构 nodejs 实践:express 最佳实践(二) 中间件 nodejs 实践:expr ...

  8. nodejs 实践:express 最佳实践(三) express 解析

    nodejs 实践:express 最佳实践(三) express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固, ...

  9. nodejs 实践:express 最佳实践(五) connect解析

    nodejs 实践:express 最佳实践(五) connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需 ...

随机推荐

  1. sicily 1003. Hit or Miss

    Description One very simple type of solitaire game known as "Hit or Miss" (also known as & ...

  2. Netty并发优化之ExecutionHandler

    上文<Netty框架入门>说到:如果业务处理handler耗时长,将严重影响可支持的并发数. 针对这一问题,经过学习,发现了可以使用ExecutionHandler来优化. 先来回顾一下没 ...

  3. angular中使用AMEXIO

    1.用NPM添加依赖到项目中,amexio需要先添加以下四个依赖到项目 npm install jquery@3.2.1  --save npm install bootstrap@4.0.0-alp ...

  4. go语言入门(一)

    环境安装 Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Window 安装包下载地址为:https://golang.org/dl/. Windows ...

  5. 制作一棵ztree

    我们在做web项目时,常会用到一些树形菜单.在此,我们利用ztree实现树形菜单的效果.zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTr ...

  6. ios测试apk

    最近apk在ios上面测试总是会遇到奇奇怪怪的问题,现在是两个项目要集成在一个apk中所以将两个项目运行之后都是编译成了.a文件,然后在两个.a文件中都设置了两个意义相同变量名相同的全局变量(标识当前 ...

  7. Tarojs+redux支付宝小程序开发攻略

    技术选型 对于习惯react语法的开发者来讲,RN是实现native的必备工具. 我们甚至可以屏蔽官方稳定而强大的配置层,直接上手开发. 而后,同为表层React语法的Rax.Taro这样的开源多端开 ...

  8. CentOS7 安装 chrome-gnome-shell

    1.download https://gitlab.gnome.org/GNOME/chrome-gnome-shell 2.安装cmake和jq yum install -y cmake yum i ...

  9. TCP(传输控制协议)

    三次握手tcp是一种面向链接的.可靠的.基于字节流的传输层通信协议,提供可靠的连接服务,采用三次握手确认建立一个连接.位码即tcp标志位,有6种标示:1.SYN(synchronous建立连接)2.A ...

  10. 【SQL Server】书签

    书签是什么 不论表是堆结构还是段结构,可以确定的是,表中每一行都是某一页的第N行,这个某一页又是某个数据库文件的第N页,这个某个数据库文件又是构成数据 库的文件组的第N个文件,因此,数据库中的每一行, ...