在使用护照模块的nest.js中,我们必须在每个模块内使用PassportModule.register()吗?

时间:2018-11-17 17:18:23

标签: typescript passport.js nestjs

如果我们不使用@AuthGuard装饰器将其导入每个模块中,则会在日志中显示以下警告。

  

为了使用“ defaultStrategy”,请确保导入   使用AuthGuard()的每个位置的PassportModule。   否则,护照将无法正常工作

@Module({
  imports: [
    PassportModule.register({ defaultStrategy: 'jwt' }),
    JwtModule.register({
      secretOrPrivateKey: 'secretKey',
      signOptions: {
        expiresIn: 3600,
      },
    }),
    UsersModule,
  ],
  providers: [AuthService, JwtStrategy],
})
export class AuthModule {}

除了在每个模块中导入“ PassportModule.register({defaultStrategy:'jwt'})”之外,还有其他方法。

1 个答案:

答案 0 :(得分:1)

假设您的其他模块正在导入AuthModule以访问AuthService,则可以重新导出PassportModule

const passportModule = PassportModule.register({ defaultStrategy: 'jwt' });

@Module({
  imports: [
    passportModule,
    JwtModule.register({
      secretOrPrivateKey: 'secretKey',
      signOptions: {
        expiresIn: 3600,
      },
    }),
    UsersModule,
  ],
  providers: [AuthService, JwtStrategy],
  exports: [passportModule]
})
export class AuthModule {}