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 相关文章推荐
nodejs分页类代码分享
Jun 17 NodeJs
nodejs开发环境配置与使用
Nov 17 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs 使用nodejs-websocket模块实现点对点实时通讯
Nov 28 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 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
基于mysql的bbs设计(一)
2006/10/09 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
一些PHP的面试题
2015/05/06 面试题
精伦电子Java笔试题
2013/01/16 面试题
贷款承诺书范文
2014/05/19 职场文书
临床专业自荐信
2014/06/22 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
投资意向协议书
2015/01/29 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
导游词之张家界
2019/10/31 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python