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的数据类型、字面量、变量介绍
May 23 Javascript
JQuery中$.ajax()方法参数详解及应用
Dec 12 Javascript
把字符串按照特定的字母顺序进行排序的js代码
Jan 28 Javascript
js创建对象的区别示例介绍
Jul 24 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
Jan 13 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
Jun 25 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
Sep 01 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
Nov 30 Javascript
vue 设置proxyTable参数进行代理跨域
Apr 09 Javascript
Vue实现商品详情页的评价列表功能
Sep 04 Javascript
Vue组件通信入门之Provide和Inject机制
Dec 29 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
珊瑚虫IP库浅析
2007/02/15 PHP
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python 多线程应用介绍
2012/12/19 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
python批量修改图片大小的方法
2018/07/24 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
美国时尚在线:Showpo
2017/09/08 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
公证委托书格式
2014/09/13 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers