【发布时间】:2021-12-09 02:58:39
【问题描述】:
当前行为
文档声明here:
...我们传递了 RolesGuard 类型(而不是实例),将实例化的责任留给框架并启用依赖注入。
所以我希望通过模块的providers 用另一个守卫“覆盖”守卫。
这没有按预期工作。
有趣的是, 不过,通过控制器的构造函数注入相同的服务确实会产生正确的服务。
输入代码
简单:https://github.com/dima-gusyatiner/nestjs-guards-override/tree/only-app-module
与另一个模块,使用exports:https://github.com/dima-gusyatiner/nestjs-guards-override/tree/master
控制器:
@Controller()
@UseGuards(AuthGuard)
模块:
@Module({
controllers: [AppController],
providers: [
{
provide: AuthGuard,
useClass: AuthOverrideGuard,
}
],
})
预期行为
我希望AuthGuard 甚至永远不会被构建。
相反,两个类都被构造,AuthGuard 被用作守卫。
环境
- Nest version: 8.0.6
- Node version: 16.8.0
- Platform: Linux
错误报告
我还为此开了一张票: https://github.com/nestjs/nest/issues/8011
问题
我在这里做错了什么,还是这是一个错误? 任何人都可以提出解决方法?
【问题讨论】:
-
我不得不说这是一个非常有趣的案例。无论如何,你能解释一下你为什么需要它吗?如果你需要它,看起来你做错了什么(即使它是一个错误)
标签: dependency-injection nestjs inversion-of-control