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 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
jquery 输入框数字限制插件
Nov 10 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
Feb 14 Javascript
canvas实现绘制吃豆鱼效果
Jan 12 Javascript
AngularJS中scope的绑定策略实例分析
Oct 30 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
Sep 14 Javascript
layUI实现列表查询功能
Jul 27 Javascript
使用vue打包进行云服务器上传的问题
Mar 02 Javascript
javascript canvas实现简易时钟例子
Sep 05 Javascript
Vue Element plus使用方法梳理
Dec 24 Vue.js
使用 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中$_SERVER的详细参数与说明
2008/07/29 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
windows上安装Anaconda和python的教程详解
2017/03/28 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Python谱减法语音降噪实例
2019/12/18 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
红色故事汇观后感
2015/06/18 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
python周期任务调度工具Schedule使用详解
2021/11/23 Python