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的地址栏射击游戏代码
Mar 10 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
Dec 21 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
Nov 20 Javascript
使用javascript做的一个随机点名程序
Feb 13 Javascript
jQuery获取cookie值及删除cookie用法实例
Apr 15 Javascript
Vue.js使用v-show和v-if的注意事项
Dec 13 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 Javascript
Vue3 源码导读(推荐)
Oct 14 Javascript
JavaScript实现京东放大镜效果
Dec 03 Javascript
Vue自定义组件的四种方式示例详解
Feb 28 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 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版(5)
2006/10/09 PHP
第七节--类的静态成员
2006/11/16 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
php格式文件打开的四种方法
2018/02/24 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
jQuery的三种$()
2009/12/30 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
Python 含参构造函数实例详解
2017/05/25 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
pycharm实现猜数游戏
2020/12/07 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
酒店总经理欢迎词
2014/01/08 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
运动会200米广播稿
2015/08/19 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技