javascript - Nest.js - 根据标头值跳过中间件
问题描述
我有一个使用nestjs
和的应用程序MiddlewareConsumer
。我想知道是否有办法根据标头值跳过中间件?
我检查了文档,发现我只能使用路径或方法(就像我现在所做的那样),但也许我缺少一些东西?
我的代码示例:
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
}
}
推荐阅读
- xcode - 使用 Foodomia.xcworkspace 文件在 XCode 中打开项目
- java - 检查一个字符串,看看是否在字符串中找到两个相邻的字母
- javascript - 在 Angular 中使用 ViewChild 访问模式内的子组件
- python - tkinker 错误:无法识别图像文件中的数据
- android-studio - 如何解决gradle;“格式化系统后包含太多目录”
- typescript - 控制 .ts 测试文件编译的设置在哪里
- r - 填充相关镜像
- c# - 具有公共前缀的字符串组列表
- asp.net-web-api - 关于证书的 MS Graph 异常
- java - 如何制作第二个计数器