node.js制作一个简单的登录拦截器


Posted in Javascript onFebruary 10, 2020

拦截器在web开发中随处可见,比如站点的管理后台,不说所有人都能进入,所以就需要做一个拦截器并友好的跳转到提示页.

下面我们简单实现一种,判断用户是否登录成功,登录不成功的用户自动重定向到登录页面.

首先我们实现一个过滤器

exports.checkAuth=function(req, res, next) {
  var token = req.signedCookies.token;
  if (token && req.session.user && req.session.user.token === token)
    next();
  else if (token) {
    //if invalid token or no session, should rebuild
    var authInfo = user.getAuthInfo(token);
    if (authInfo && authInfo.isAuth) {
      req.session.user = {
        userID: authInfo.userID,
        userName: authInfo.userName,
        isAuth: authInfo.isAuth,
        token: token
      }
      next();

    } else
      res.redirect('/user/login');
  } else
    res.redirect('/user/login');
}

然后定义路由,并加入过滤器

module.exports = function (app) {
  app.get('/user/blogList',pageAdmin.checkAuth, pageAdmin.pageList);
  app.all('/user/post',pageAdmin.checkAuth, pageAdmin.pagePost);
}

上面的路由定义接收3个参数,第一个是 请求的url路径,第二个是过滤器,如果满足过滤器将下一步进入路由处理函数,如果不满足将不会走到后面的路由定义函数里.

Javascript 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
鼠标拖动实现DIV排序示例代码
Oct 14 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
Dec 19 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
Apr 13 Javascript
jQuery操作css样式
May 15 jQuery
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
Jun 04 Javascript
命令行批量截图Node脚本示例代码
Jan 25 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
在vue中使用echars实现上浮与下钻效果
Nov 08 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
Feb 10 #Javascript
jQuery实现简易QQ聊天框
Feb 10 #jQuery
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
Feb 09 #Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
Feb 09 #Javascript
如何基于javascript实现贪吃蛇游戏
Feb 09 #Javascript
javascript浅层克隆、深度克隆对比及实例解析
Feb 09 #Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 #Javascript
You might like
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
IE8 原生JSON支持
2009/04/13 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
戴森英国官网:Dyson英国
2019/05/07 全球购物
护士自我评价
2014/02/01 职场文书
公司活动方案范文
2014/03/06 职场文书
2014年两会学习心得体会
2014/03/17 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript