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的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs个人博客开发第一步 准备工作
Apr 12 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 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 简单数组排序实现代码
2009/08/05 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
让你的网站可编辑的实现js代码
2009/10/19 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
python实现的各种排序算法代码
2013/03/04 Python
python实现文件分组复制到不同目录的例子
2014/06/04 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
python多线程并发及测试框架案例
2019/10/15 Python
python实现指定ip端口扫描方式
2019/12/17 Python
Python文件操作方法详解
2020/02/09 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
python3.7添加dlib模块的方法
2020/07/01 Python
物流仓储计划书
2014/01/10 职场文书
公证委托书模板
2014/04/03 职场文书
会计毕业生自荐书
2014/06/12 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
物流管理专业推荐信
2014/09/06 职场文书
2014年小学工作总结
2014/11/26 职场文书
离职感谢信怎么写
2015/01/22 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
python接口测试返回数据为字典取值方式
2022/02/12 Python