gpt4 book ai didi

nestjs - 如何在Nestjs中使用express的路由特定中间件?

转载 作者:行者123 更新时间:2023-12-02 11:50:11 25 4
gpt4 key购买 nike

我正在尝试使用此库( keycloak-connect )进行身份验证和授权。它有一个全局中间件,可以直接通过 app.use() 方法使用,也可以通过在其周围包装一个 Nestjs 中间件类来使用。但是如何使用特定于路由的 Express 中间件来保护各个路由呢?

普通 express 应用程序中的用法示例

app.get( '/protected', keycloak.protect('adminRole'), handler );

protect方法返回一个带有签名function(req, res, next)的普通快速中间件

最佳答案

您的“处理程序”是用 @Controller 装饰的类中的一个方法(用 GETPOST 等装饰)。导入此 Controller 的模块应该声明中间件。

示例:

@Module({
controllers: [YourController],
})
export class YourModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(keyCloack.protect('adminRole'))
.forRoutes('/protected');
}
}

其中 YourController 包含路由“/protected”的处理程序。

实现NestModule是关键。然后您必须声明 configure 并可以使用 consumer

关于nestjs - 如何在Nestjs中使用express的路由特定中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50593140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com