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下打包模块archiver详解
Dec 03 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 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
PHP 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
用Python逐行分析文件方法
2019/01/28 Python
python绘制直方图和密度图的实例
2019/07/08 Python
Python中求对数方法总结
2020/03/10 Python
python如何删除文件、目录
2020/06/23 Python
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
社团活动总结
2014/04/28 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
诚信考试主题班会
2015/08/17 职场文书
Django如何与Ajax交互
2021/04/29 Python
Fluentd搭建日志收集服务
2022/09/23 Servers