全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Express + Node.js实现登录拦截器的实例代码

介绍

这边的拦截器,对应于spring MVC中的filter,所有的http请求,通过拦截器处理之后才能访问到对应的代码/资源。

最典型的应用场景就是实现访问权限控制,给予不同的用户/用户组不同的页面和接口访问权限,仅能够访问允许的页面和接口。

场景

app.post('/login', function(request, res, next){
// do something
});
app.post('/getData',function(request, res, next){
// do something
  var data="some data";
  res.send({"data":data});
});

如果不做任何处理,任何人发送getData的post请求可以直接从后台读取数据,而不需要任何的登陆,只需要知道接口就可以。

对应每个接口,如果在每个接口下面加上权限判断,代码会非常的重复,于是面向切面就来了,可以通过把拦截器加在每个http请求之前,来实现权限判断的功能。

实现

// 所有用户可以访问index.html, error.html
// admin可以访问admin.html, /getData
// 登陆用户可以访问home.html
app.all('/*', function(request, res, next){
  // 思路:
  // 得到请求的url
  // 然后得到request的cookie,根据cookie得到当前登陆的用户
  // 判断用户对应url的权限
  var jsPattern=/\.js$/;
  var url=request.orignalUrl;
  if(jsPattern.test(url)){
  // 公共部分,放行
    next();
    return;
  }
  if(url=='index.html'||url=='error.html'){
    next();
    return;
  }
  var cookie=JSON.stringify(req.cookies);
  if(access){
    next();
  }
  else{
    res.redirect('error.html');
  }
});

实现思路:

1. 拦截所有请求(上面的就可以啦),得到当前访问的url

2. 根据cookie得到当前用户

3. 根据url和用户对应的身份来判断是否可以访问

4. 如果可以调用next();

5. 如果不能访问,返回错误信息

注意

  1. next(); 仅仅是一个函数,对应着原本处理请求的代码,如前面的app.post(‘/getData'),当这里的代码处理完成后会回到对应next(); 处,所以需要处理好对应的关系,如果必要需要return结束当前的函数,不然会出错哒。
  2. 对于公共的部分,如js插件,部分图片,还有css的部分,可以直接放行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Express  # Node.js  # 拦截器  # 登录拦截器  # node puppeteer(headless chrome)实现网站登录  # 详解node登录接口之密码错误限制次数(含代码)  # node.js制作一个简单的登录拦截器  # 可以直接  # 就可以  # 访问权限  # 来了  # 只需  # 可以通过  # 仅仅是  # 要知道  # 不做  # 用户可以  # 后会  # 来实现  # 错误信息  # 大家多多  # 加在  # 不需要任何  # 最典型  # 应于  # 判断是否 


相关文章: 公司网站设计制作厂家,怎么创建自己的一个网站?  如何在七牛云存储上搭建网站并设置自定义域名?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何通过cPanel快速搭建网站?  如何通过虚拟机搭建网站?详细步骤解析  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  建站主机核心功能解析:服务器选择与网站搭建流程指南  如何用PHP快速搭建CMS系统?  建站主机类型有哪些?如何正确选型  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  完全自定义免费建站平台:主题模板在线生成一站式服务  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  如何快速搭建支持数据库操作的智能建站平台?  建站主机选购指南:核心配置与性价比推荐解析  网站制作公司,橙子建站是合法的吗?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  建站之星安装后如何自定义网站颜色与字体?  如何零成本快速生成个人自助网站?  如何零基础开发自助建站系统?完整教程解析  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  ,石家庄四十八中学官网?  建站之星安装需要哪些步骤及注意事项?  C#如何序列化对象为XML XmlSerializer用法  如何登录建站主机?访问步骤全解析  如何用wdcp快速搭建高效网站?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Android自定义控件实现温度旋转按钮效果  如何在腾讯云服务器快速搭建个人网站?  香港网站服务器数量如何影响SEO优化效果?  制作电商网页,电商供应链怎么做?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何在万网主机上快速搭建网站?  如何通过VPS建站实现广告与增值服务盈利?  如何选择PHP开源工具快速搭建网站?  如何通过宝塔面板实现本地网站访问?  Bpmn 2.0的XML文件怎么画流程图  如何快速打造个性化非模板自助建站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何制作网站标识牌,动态网站如何制作(教程)?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  招商网站制作流程,网站招商广告语?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  如何在建站之星绑定自定义域名?  如何选择网络建站服务器?高效建站必看指南  在线教育网站制作平台,山西立德教育官网?  网站制作价目表怎么做,珍爱网婚介费用多少? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。