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 相关文章推荐
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
javascript按位非运算符的使用方法
Nov 14 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
jquery插件jSignature实现手动签名
May 04 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
Vue不能检测到Object/Array更新的情况的解决
Jun 26 Javascript
js中apply()和call()的区别与用法实例分析
Aug 14 Javascript
详解vue使用插槽分发内容slot的用法
Mar 28 Javascript
vue模块移动组件的实现示例
May 20 Javascript
vue a标签点击实现赋值方式
Sep 07 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
小偷PHP+Html+缓存
2006/12/20 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
php对数组排序的简单实例
2013/12/25 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
php实现URL加密解密的方法
2016/11/17 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
python多线程用法实例详解
2015/01/15 Python
Python线程中对join方法的运用的教程
2015/04/09 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
python非递归全排列实现方法
2017/04/10 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
Python定义函数实现累计求和操作
2020/05/03 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
英文版餐饮业求职信
2013/10/18 职场文书
英文版区域经理求职信
2013/10/23 职场文书
银行优秀员工事迹
2014/02/06 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
网络管理员岗位职责
2014/03/17 职场文书
社区禁毒工作方案
2014/06/02 职场文书
学生干部培训方案
2014/06/12 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
项目合作协议书
2014/09/23 职场文书
领导班子整改方案
2014/10/25 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
教师个人学习总结
2015/02/11 职场文书