如何在Nest.JS中使用多个秘密实现多个JWT策略

如何在Nest.JS中使用多个秘密实现多个JWT策略,jwt,passport.js,nestjs,passport-jwt,nestjs-jwt,Jwt,Passport.js,Nestjs,Passport Jwt,Nestjs Jwt,我喜欢实现多个命名passport JWT策略,每个策略都有自己的secret。有什么办法可以实施吗? 据我从中了解,在模块初始化期间只能注册一个秘密: @Module({ imports: [ UsersModule, PassportModule, JwtModule.register({ secret: jwtConstants.secret, signOptions: { expiresIn: '60s' }, }), ],

我喜欢实现多个命名passport JWT策略,每个策略都有自己的
secret
。有什么办法可以实施吗? 据我从中了解,在模块初始化期间只能注册一个秘密:

@Module({
  imports: [
    UsersModule,
    PassportModule,
    JwtModule.register({
      secret: jwtConstants.secret,
      signOptions: { expiresIn: '60s' },
    }),
  ],
  providers: [AuthService, LocalStrategy],
  exports: [AuthService, JwtModule],
})

为了允许注册同一服务的多个变体,您需要在
JwtModule
周围使用一个定制的提供者和包装器模块。它可能看起来像这样:

@模块({
导入:[JwtModule.register({
秘密:秘密1,
签名选项:{expiresIn:'60s'},
})],
供应商:[{
提供:“JwtSecret1Service”,
useExisting:JwtService,
}],
导出:['JwtSecret1Service'],
})
导出类JwtSecret1Module{}
现在,您可以使用
@Inject('JwtSecret1Service')
来使用此特定配置,只要消费模块的
imports
中添加了
JwtSecret1Module
。您可以使用任意多个
JwtService
变体来实现这一点,每个变体都有自己的配置