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的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
nodejs中操作mysql数据库示例
Dec 20 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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
资料注册后发信小技巧
2006/10/09 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
php基础学习之变量的使用
2011/06/09 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
axios基本入门用法教程
2017/03/25 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python插入数据到列表的方法
2015/04/30 Python
python使用tkinter实现简单计算器
2018/01/30 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python urllib3软件包的使用说明
2020/11/18 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
电大毕业自我鉴定
2014/02/03 职场文书
法律进社区实施方案
2014/03/21 职场文书
幼儿园运动会口号
2014/06/07 职场文书
委托书怎样写
2014/08/30 职场文书
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server