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 解析读取XML文档 实例代码
Jul 07 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
Apr 08 Javascript
生成二维码方法汇总
Dec 26 Javascript
jQuery获取上传文件的名称的正则表达式
May 21 Javascript
js面向对象的写法
Feb 19 Javascript
基于bootstrap实现多个下拉框同时搜索功能
Jul 19 Javascript
react native实现往服务器上传网络图片的实例
Aug 07 Javascript
js数据类型检测总结
Aug 05 Javascript
详解vue-property-decorator使用手册
Jul 29 Javascript
vue实现鼠标移过出现下拉二级菜单功能
Dec 12 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 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
PHP array 的加法操作代码
2010/07/24 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
python模拟实现分发扑克牌
2020/04/22 Python
python如何调用百度识图api
2020/09/29 Python
如何整合JQuery和Prototype
2014/01/31 面试题
什么是GWT的Entry Point
2013/08/16 面试题
高中军训感想800字
2014/02/23 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
新闻通讯稿范文
2015/07/22 职场文书
Oracle笔记
2021/04/05 Oracle
详解MySQL 用户权限管理
2021/04/20 MySQL
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android