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下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
Apr 02 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
Dec 20 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
Jul 27 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
Aug 03 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 Javascript
vue-resource 拦截器使用详解
Feb 21 Javascript
js实现3D图片展示效果
Mar 09 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
Nov 08 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教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
php生成短网址示例
2014/05/05 PHP
twig模板常用语句实例小结
2016/02/04 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
ES6的新特性概览
2016/03/10 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
Python3 Random模块代码详解
2017/12/04 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
在Python中定义一个常量的方法
2018/11/10 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
python 进程池pool使用详解
2020/10/15 Python
社区健康教育实施方案
2014/03/18 职场文书
C++程序员求职信范文
2014/04/14 职场文书
2015年个人思想总结
2015/03/09 职场文书
党小组鉴定意见
2015/06/02 职场文书
投诉书格式范本
2015/07/02 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
matlab xlabel位置的设置方式
2021/05/21 Python
详解Python魔法方法之描述符类
2021/05/26 Python
Python 实现Mac 屏幕截图详解
2021/10/05 Python
Go语言并发编程 sync.Once
2021/10/16 Golang