中间件可以做面向切面编程
一、定义中间件
在egg中定义中间件,app/middleware目录下,每一个js就是一个中间件
//1、在js中,暴露一个方法
module.exports = (options, app) => {
//2、返回一个异步的函数
return async function login(ctx, next) {
console.log('hello middleware');
await next();
}
}
二、配置中间件
在config/config.default.js
//配置中间件,注意login需要和app/middleware下的login.js对应
config.middleware = [
'login'
];
//如果你的中间件需要传递参数,可以通过config.login来进行参数的传递,在中间件件可以通过options接收传递过来的参数
config.login = {
data: '给中间件传递的参数!'
}
config.middleware表示这个中间件使用了 app 这个参数(全局参数)
config.login 表示这个参数使用了 options 这个参数 (配置参数)
三、使用中间件
在router.js
const auth = app.middleware.auth();
router.get('/user/add', auth, controller.user.add);
网友评论