nodejs中间件拦截,express不登录无法进入后台页面
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不登录无法进入后台页面的更多相关文章
- nodejs框架express准备登录
目录: 安装模板 静态资源 添加视图 渲染视图 url重定向 模板引擎 从本节课程开始我们要使用express框架实现一个简单的用户登陆功能,让我们先准备一下相关资源. 在nodejs中使用expre ...
- nodejs 实践:express 最佳实践(二) 中间件
express 最佳实践(二):中间件 第一篇 express 最佳实践(一):项目结构 express 中最重要的就是中间件了,可以说中间件组成了express,中间件就是 express 的核心. ...
- 后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户)
后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户) 一.总结 一句话总结: 1.中间件中验证用户是否登录:if(!Auth::guard('admin')->c ...
- nodejs 实践:express 最佳实践(四) express-session 解析
nodejs 实践:express 最佳实践(四) express-session 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs ...
- Vue+Express实现登录状态权限控制
前提须知 对Vue全家桶有基本的认知. 拥有node环境 了解express 本篇只是介绍登录状态的权限验证,以及登录,注销的前后端http交互.前端布局,后端密码验证等以后有时间再对这些内容进行补充 ...
- koa2实现拦截器进行登录前session校验
//定义允许直接访问的url const allowpage = ['/login','/api/login'] //拦截 function localFilter(ctx) { let url = ...
- nodejs 实践:express 最佳实践系列
nodejs 实践:express 最佳实践系列 nodejs 实践:express 最佳实践(一) 项目结构 nodejs 实践:express 最佳实践(二) 中间件 nodejs 实践:expr ...
- nodejs 实践:express 最佳实践(三) express 解析
nodejs 实践:express 最佳实践(三) express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固, ...
- nodejs 实践:express 最佳实践(五) connect解析
nodejs 实践:express 最佳实践(五) connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需 ...
随机推荐
- sicily 1003. Hit or Miss
Description One very simple type of solitaire game known as "Hit or Miss" (also known as & ...
- Netty并发优化之ExecutionHandler
上文<Netty框架入门>说到:如果业务处理handler耗时长,将严重影响可支持的并发数. 针对这一问题,经过学习,发现了可以使用ExecutionHandler来优化. 先来回顾一下没 ...
- angular中使用AMEXIO
1.用NPM添加依赖到项目中,amexio需要先添加以下四个依赖到项目 npm install jquery@3.2.1 --save npm install bootstrap@4.0.0-alp ...
- go语言入门(一)
环境安装 Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Window 安装包下载地址为:https://golang.org/dl/. Windows ...
- 制作一棵ztree
我们在做web项目时,常会用到一些树形菜单.在此,我们利用ztree实现树形菜单的效果.zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTr ...
- ios测试apk
最近apk在ios上面测试总是会遇到奇奇怪怪的问题,现在是两个项目要集成在一个apk中所以将两个项目运行之后都是编译成了.a文件,然后在两个.a文件中都设置了两个意义相同变量名相同的全局变量(标识当前 ...
- Tarojs+redux支付宝小程序开发攻略
技术选型 对于习惯react语法的开发者来讲,RN是实现native的必备工具. 我们甚至可以屏蔽官方稳定而强大的配置层,直接上手开发. 而后,同为表层React语法的Rax.Taro这样的开源多端开 ...
- CentOS7 安装 chrome-gnome-shell
1.download https://gitlab.gnome.org/GNOME/chrome-gnome-shell 2.安装cmake和jq yum install -y cmake yum i ...
- TCP(传输控制协议)
三次握手tcp是一种面向链接的.可靠的.基于字节流的传输层通信协议,提供可靠的连接服务,采用三次握手确认建立一个连接.位码即tcp标志位,有6种标示:1.SYN(synchronous建立连接)2.A ...
- 【SQL Server】书签
书签是什么 不论表是堆结构还是段结构,可以确定的是,表中每一行都是某一页的第N行,这个某一页又是某个数据库文件的第N页,这个某个数据库文件又是构成数据 库的文件组的第N个文件,因此,数据库中的每一行, ...