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

Fro*_*nex 5 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 {}
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*ter 10

假设您的其他模块正在导入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 {}
Run Code Online (Sandbox Code Playgroud)

  • 需要明确的是,从那时起,其他模块将只导入“AuthModule”类,是吗? (2认同)