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实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
js data日期初始化的5种方法
Dec 29 Javascript
javascript进行数组追加方法小结
Jun 16 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
JS模拟键盘打字效果的方法
Aug 05 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
Dec 08 Javascript
Vue2.x中的父组件传递数据至子组件的方法
May 01 Javascript
Vue 使用formData方式向后台发送数据的实现
Apr 14 Javascript
微信小程序实现跳转的几种方式总结(推荐)
Apr 24 Javascript
使vue实现jQuery调用的两种方法
May 12 jQuery
JavaScript实现简单贪吃蛇效果
Mar 09 Javascript
javascript之Object.assign()的痛点分析
Mar 03 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 Smarty生成EXCEL文档的代码
2008/08/23 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php cli配置文件问题分析
2015/10/15 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
Vue中全局变量的定义和使用
2019/06/05 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python reverse反转部分数组的实例
2018/12/13 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
html5与css3小应用
2013/04/03 HTML / CSS
暑期实习鉴定
2013/12/16 职场文书
竟聘演讲稿范文
2013/12/31 职场文书
爱之链教学反思
2014/04/30 职场文书
工程负责人任命书
2014/06/06 职场文书
清洁工岗位职责
2015/02/13 职场文书
教师节倡议书2015
2015/04/27 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
财务年终工作总结大全
2019/06/20 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python
Python函数式编程中itertools模块详解
2021/09/15 Python