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. python从2.6.x升级到2.7.x

    [前提] 今日是20171207,目前Linux发行版默认安装的Python版本都是2.6.x,但是这个版本Python已经不再进行维护了. 所以需要将Python做一个升级,到2.7.x [注意] ...

  2. 转 proc文件

    /proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明/dev/kmem. /proc 里的大多数文件都是只读的, 但也可以通过写一些文件来改变内核变量. 下面对整个 /pro ...

  3. hdu 3573(数学+贪心)

    Buy Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. JavaScript中继承的实现

    继承是类和类之间的关系,继承使得子类别具有父类别的属性和方法. js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言, ...

  5. Error: Exception was raised when calling event-notify Vuser function in extension parameng.dll: System Exceptions: EXCEPTION_ACCESS_VIOLATION

    解决方法:在C 盘新建一个TEMP目录,把环境变量TMP,TEMP的值设置成环境变量,重启计算机

  6. ubuntu 系统提示升级失败,boot空间不足

    系统提示升级失败,boot空间不足,解决方法: linux 随着系统的升级,会自动攒下好几个内核 执行 uname -a 看下自己当前启动的是哪个内核 dpkg --get-selections |g ...

  7. Codeforces Round #285 (Div. 1) B - Misha and Permutations Summation 康拓展开+平衡树

    思路:很裸的康拓展开.. 我的平衡树居然跑的比树状数组+二分还慢.. #include<bits/stdc++.h> #define LL long long #define fi fir ...

  8. 转:深入剖析 JavaScriptCore

    ref:https://ming1016.github.io/2018/04/21/deeply-analyse-javascriptcore/ 深入剖析 JavaScriptCore

  9. 转:VMMAP内存查看工具

    转:http://blog.csdn.net/woddle/article/details/45337767 下面我根据VMMap来详细介绍一下内存的分类. 内存是一个很复杂的系统,其中的paging ...

  10. HDU 6186 CS Course

    保存前缀后缀. 保存一下前缀和后缀,去掉第$i$个位置,就是$L[i-1]$和$R[i+1]$进行运算. #include<bits/stdc++.h> using namespace s ...