【问题标题】:Nest.js - skip middleware based on header valueNest.js - 根据标头值跳过中间件
【发布时间】:2020-02-29 13:03:29
【问题描述】:

我有一个使用nestjsMiddlewareConsumer 的应用程序。 我想知道是否有办法根据标头值跳过中间件?

我检查了文档,发现我只能使用路径或方法(就像我现在所做的那样),但也许我缺少一些东西?

我的代码示例:

export class AuthorizationModule implements NestModule {
configure(consumer: MiddlewareConsumer): void {
    consumer.apply(DiscriminatorValidator).with(common.USERS).forRoutes(
        {path: RELATIVE_RESOURCE_PATH, method: RequestMethod.POST},{path: RELATIVE_RESOURCE_PATH, method: RequestMethod.PUT});
    consumer.apply(validate).forRoutes(AuthorizationController);
    consumer.apply(HeadersValidator).with().forRoutes(AuthorizationController);
    consumer.apply(ContextAndHeadersMiddleware).forRoutes(AuthorizationController);

 }
}

【问题讨论】:

    标签: javascript node.js typescript express nestjs


    【解决方案1】:

    MiddlewareConsumer 无法做到这一点。


    但是,中间件本身可以检查它是否适用或应该跳过:

    @Injectable()
    export class ContextAndHeadersMiddleware implements NestMiddleware {
      use(req: Request, res: Response, next: Function) {
        if (req.get('my-header') === 'SKIP') {
          // skip this middleware if header value is set
          return next();
        }
        // middleware logic
      }
    }
    

    【讨论】:

    • 是的,我知道内部检查,但我想避免这种情况。
    猜你喜欢
    • 2019-12-21
    • 2020-05-12
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 2019-03-24
    相关资源
    最近更新 更多