egg.js 中间件不起作用?

我再middleware中编写认证接口

authenticate.js
module.exports = options => {
    return async function auth(ctx, next) {
        console.log('99999999999999999')
        let { app } = this
        const { redis } = app;
        let sign = ctx.get('x-sign');
        let user_id = ctx.get('x-user-id');

        if (!user_id) {
            ctx.throw(412, 'invalid user id');
        }
        // if (!sign) {
        //     ctx.throw(412, 'invalid sign');
        // }
        let token = await redis.get(user_id);
        if (!token) {
            ctx.throw(412, 'invalid user');
        }
        await next();
        console.log('9999999999999')
    };
};

在config.default.js中加载中间件

config.middleware = ['authenticate']

用psotman请求接口,根本没有走这个中间件,是什么原因?

我禁用了csrf

阅读 4.6k
2 个回答

找到问题了,我在config文件中加入了config.local.js配置文件,在这里面加入middleware就可以,但是我在官方文档上看到config.default.js不管如何都会加载的,为什么在这里面配置就不行?

找到问题了,因为在config.local.js中也配置了middleware,它会覆盖config.default.js中的middleware配置,所以config.defalut.js中的配置没有起到作用,配置文件的加载规则是,其他环境的配置文件会覆盖config.default.js中相同的配置项

特意注册账号来感谢你一下,调试了好久,看到你的才恍然大悟,多谢老铁~~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题