Это не работает, потому что охранники не зарегистрированы в качестве поставщиков в модуле.Они непосредственно создаются в фреймворке.
Вы можете использовать инъекцию зависимостей в охранник:
@Injectable()
export class MyAuthGuard {
constructor(private readonly configService: ConfigService) {
// use the configService here
}
}
и
@UseGuards(MyAuthGuard)
или создать экземпляр защитника самостоятельно:
@UseGuards(new AuthGuard(configService.get('some_key')))
В особом случае AuthGuard
вы можете установить defaultStrategy
в PassportModule
.Тогда вы можете просто использовать @UseGuards(AuthGuard())
PassportModule.register({ defaultStrategy: 'jwt'})
или async:
PassportModule.registerAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({ defaultStrategy: configService.authStrategy}),
inject: [ConfigService],
})