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 相关文章推荐
JavaScript XML实现两级级联下拉列表
Nov 10 Javascript
javascript 获取图片颜色
Apr 05 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
百度移动版的url编码解码示例
Apr 29 Javascript
javascript if条件判断方法小结
May 17 Javascript
Node.js抓取中文网页乱码问题和解决方法
Feb 10 Javascript
jQuery实现tab标签自动切换的方法
Feb 28 Javascript
javascript实现数组中的内容随机输出
Aug 11 Javascript
详述JavaScript实现继承的几种方式(推荐)
Mar 22 Javascript
Vue 实现手动刷新组件的方法
Feb 19 Javascript
layui在form表单页面通过Validform加入简单验证的方法
Sep 06 Javascript
vue绑定数字类型 value为数字的实例
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
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
javascript如何创建对象
2016/08/29 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python实现简单图片物体标注工具
2019/03/18 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
如何使用python代码操作git代码
2020/02/29 Python
python3 使用traceback定位异常实例
2020/03/09 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
铭立家具面试题
2012/12/06 面试题
晚会主持词开场白
2014/03/17 职场文书
综艺节目策划方案
2014/06/13 职场文书
岁月神偷观后感
2015/06/11 职场文书
居住证明范文
2015/06/17 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android