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 相关文章推荐
IE与FireFox的兼容性问题分析
Apr 22 Javascript
javascript call方法使用说明
Jan 11 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
Jul 17 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
Dec 23 Javascript
jQuery中队列queue()函数的实例教程
May 03 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
May 31 Javascript
微信小程序实现带缩略图轮播效果
Nov 04 Javascript
用node开发并发布一个cli工具的方法步骤
Jan 03 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 Javascript
vue-cli3添加模式配置多环境变量的方法
Jun 05 Javascript
JavaScript中数组去重的5种方法
Jul 04 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
2006/11/25 PHP
php模板原理讲解
2013/11/13 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
浅谈PHP中的
2016/04/23 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
jQuery的框架介绍
2016/05/11 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
IE9下html5初试小刀
2010/09/21 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
暑期实践思想汇报
2014/01/06 职场文书
工作保证书范文
2014/04/29 职场文书
教师个人考察材料
2014/12/16 职场文书
趵突泉导游词
2015/02/03 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书