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 ajax提交表单数据的两种实现方法
Apr 29 Javascript
收集json解析的四种方法分享
Jan 17 Javascript
JS根据变量保存方法名并执行方法示例
Apr 04 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
Angularjs中UI Router全攻略
Jan 29 Javascript
jquery动态遍历Json对象的属性和值的方法
Jul 27 Javascript
Javascript for in的缺陷总结
Feb 03 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
Jan 13 Javascript
vue基础之data存储数据及v-for循环用法示例
Mar 08 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
如何利用React实现图片识别App
Feb 18 Javascript
JS实现数组去重的11种方法总结
Apr 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清除数组中所有字符串两端空格的方法
2014/10/20 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
php遍历CSV类实例
2015/04/14 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python实现三维拟合的方法
2018/12/29 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
2015年公司工作总结
2015/04/25 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
python基础之while循环语句的使用
2021/04/20 Python
pandas中DataFrame检测重复值的实现
2021/05/26 Python