我有一个使用 nestjs
和 MiddlewareConsumer
的应用程序。
我想知道是否有办法根据 header 值跳过中间件?
我检查了文档,发现我只能使用路径或方法(就像我现在所做的那样),但也许我遗漏了一些东西?
我的代码示例:
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);
}
}
最佳答案
这对于 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
}
}
关于javascript - Nest.js - 根据 header 值跳过中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58689608/