中间件(Middleware)
中间件:匹配路由前、匹配路由完成做的一系列的操作。 Egg 是基于 Koa 实现的,所以 Egg 的中间件形式和 Koa 的中间件形式是一样的,都是基于洋葱圈模型
一般来说中间件也会有自己的配置。在框架中,一个完整的中间件是包含了配置处理的。我们约定一个中间件是一个放置在 app/middleware
目录下的单独文件,它需要exports
一个普通的 function
,接受两个参数:
options: 中间件的配置项,框架会将
app.config[${middlewareName}]
传递进来。app: 当前应用 Application 的实例。
小案例(限制ip)
1、app/middleware
下面新建forbidip.js
内容如下:
module.exports = (options, app) => {
return async function forbidipMiddleware(ctx, next) {
console.log(options);
console.log(ctx.request.ip);
var sourceIp=ctx.request.ip;
const match = options.ip.some(val =>{
if(val==sourceIp){
return true;
}
});
if (match) {
ctx.status = 403;
ctx.message = 'Go away, robot.';
} else {
await next();
}
}
};
2、找到config.default.js
配置当前项目需要使用的中间件以及中间件的参数
//中间件
config.middleware = ['forbidip'];
config.forbidip = {
ip: [
'127.0.0.1',
'192.168.0.1'
],
};
Last updated
Was this helpful?