Express+Nodejs 下的登录拦截实现代码


Posted in NodeJs onJuly 01, 2017

原来一直不知道怎么在Express+Nodejs里面添加类似于Struts2的拦截器(因为要使用登录拦截的功能)。

以前一直以为在router这块添加类似一下的转移路由控制权代码的(每个都加很麻烦)

app.get('/show', controllers.checkLogin);//登录验证
app.get('/show', controllers.showList);//实际跳转

又或者是像某些项目里面给每个controller的方法里面加以下这种验证(太繁琐了)

if (!req.session.user) {
    return res.redirect("/login");
  }

最近翻到之前使用session的代码片段,突然有如茅塞顿开啊!!

//session
app.use(function (req, res, next) {
  var err = req.flash('error');
  var success = req.flash('success');
  res.locals({
    user:req.session.user,
    navSide:req.session.navSide,
    error:err.length ? err : null,
    success:success.length ? success : null
  });
  next();
});

这尼玛不就是个拦截器吗~??

稍加改造

//登录拦截器
app.use(function (req, res, next) {
  var url = req.originalUrl;
  if (url != "/login" && !req.session.user) {
    return res.redirect("/login");
  }
  next();
});

经过测试,成功了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
Nodejs抓取html页面内容(推荐)
Aug 11 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
Nodejs多站点切换Htpps协议详解及简单实例
Feb 23 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 #NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 #NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 #NodeJs
NodeJS自定义模块写法(详解)
Jun 27 #NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 #NodeJs
NodeJs中express框架的send()方法简介
Jun 20 #NodeJs
深入浅析Nodejs的Http模块
Jun 20 #NodeJs
You might like
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
JS 控制非法字符的输入代码
2009/12/04 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python实现排序算法
2014/02/14 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
python中模块的__all__属性详解
2017/10/26 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
详解Python用户登录接口的方法
2019/04/17 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
建筑实习自我鉴定
2013/10/18 职场文书
服装机修工岗位职责
2013/12/26 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
高中政治教学反思
2014/01/18 职场文书
承认错误的检讨书
2014/01/30 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
公司员工离职证明书
2014/10/04 职场文书
java泛型通配符详解
2021/07/25 Java/Android