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 相关文章推荐
统计出现最多的字符次数的js代码
Dec 03 Javascript
删除select中所有option选项jquery代码
Aug 12 Javascript
JS短路原理的应用示例 精简代码的途径
Dec 13 Javascript
ajax+jQuery实现级联显示地址的方法
May 06 Javascript
JavaScript的9种继承实现方式归纳
May 18 Javascript
jQuery图片轮播滚动切换代码分享
Apr 20 Javascript
JS延时器提示框的应用实例代码解析
Apr 27 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
react开发中如何使用require.ensure加载es6风格的组件
May 09 Javascript
详解用Webpack与Babel配置ES6开发环境
Mar 12 Javascript
小程序云开发实现数据库异步操作同步化
May 18 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
用PHP读取IMAP邮件
2006/10/09 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python 图片验证码代码
2008/12/07 Python
python生成式的send()方法(详解)
2017/05/08 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
PyQt5组件读取参数的实例
2019/06/25 Python
Python线程指南分享
2019/11/19 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
python实现最短路径的实例方法
2020/07/19 Python
自动化专业本科毕业生求职信
2013/10/20 职场文书
公司出纳岗位职责
2013/12/07 职场文书
关于诚信的活动方案
2014/08/18 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
电影地道战观后感
2015/06/04 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
教师节随笔
2015/08/15 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
Java实现二分搜索树的示例代码
2022/03/17 Java/Android