Egg middleware 中间件
中间件 Middleware Egg
2023-09-11 14:15:29 时间
中间件:匹配路由前、匹配路由完成做的一系列操作。
Egg是基于Koa实现的,所有Egg的中间件形式和Koa的中间件形式是一样的,都是基于洋葱模型。
Koa中的中间件:
https://eggjs.org/zh-cn/intro/egg-and-koa.html#middleware
Egg中的中间件:
http://eggjs.org/zh-cn/basics/middleware.html
一般来说中间件也会有自己的配置。在框架中,一个完整的中间件是包含了配置处理的。我们约定一个中间件是一个放置在 app/middleware 目录下的单独文件,它需要 exports 一个普通的 function,接受两个参数:
options: 中间件的配置项,框架会将 app.config[${middlewareName}] 传递进来。
app: 当前应用 Application 的实例。
1、app/middleware 下面新建 forbidip.js 内容如下:
/** * 拦截特殊ip,防止爬虫 * options: 中间件的配置项,框架会将 app.config[${middlewareName}] 传递进来 * app: 当前应用 Application 的实例 * 每次路由变化都会触发 中间件 */ module.exports = (options, app) => { return async function forbidipMiddleware(ctx, next) { /** * 要屏蔽的ip * 1、从数据库获取 * 2、从参数传入 */ console.log(options); console.log(ctx.request.ip); // 获取客户端的ip var sourceIp = ctx.request.ip; const match = options.ip.some(val => { if(val == sourceIp){ return true; } }); if(match){ ctx.status = 403; // message 接受的字符不能有中文,否则会报错 // ctx.message = 'Your IP has been blocked'; ctx.body = '您的ip已经被屏蔽'; }else{ await next(); } } }
2、找到 config.default.js 配置当前项目需要使用的中间件以及中间件的参数
// 增加配置中间件 config.middleware = ['forbidip']; // 给pforbidip中间件传入的参数 config.forbidip = { ip: ['192.168.0.10'] }
3.注意
传入的中间件名称 需要与 中间件文件名 相同
相关文章
- Java Web中间件
- [转]express常用中间件
- [转] Nodejs 进阶:Express 常用中间件 body-parser 实现解析
- redux 中间件的原理是什么?
- koa 基础(七)错误处理中间件
- Lumen开发:lumen源码解读之初始化(3)——单例(singleton)与中间件(Middleware)
- MySQL中间件之ProxySQL(12):禁止多路路由
- MySQL中间件之ProxySQL(2):初试读写分离
- Scrapy 2.6 Spider Middleware 爬虫页中间件使用指南
- Kafka vs RocketMQ—— Topic数量对单机性能的影响-转自阿里中间件
- asp.net core webapi 跨域中间件
- 中间件:SpringBoot-JAVA整合MQTT通信
- 中间件的理解
- 八年来我们到底经历了什么?——中间件专家带你“重走”双11高可用架构演进之路
- golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏
- node的express中间件之directory
- node中express的中间件之methodOverride