es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Inyectar un servicio o clase en el guard en NestJS.

Se necesita el cliente DI Kafka en guardia:

auth.guard.ts

export class AuthGuard implements CanActivate {
  private _client: ClientKafka; <----- // TODO implementar mecanismo de DI Nestjs

public async canActivate(context: ExecutionContext): Promise<boolean> {
    try {

  const request = context.switchToHttp().getRequest();
  const authorization: string = request.get('Authorization');
  ...código aquí simplemente envía datos al servicio JWT...

  return true;
} catch (err) {
  return false;
}


}
}

En canActivate se usa new para crear una instancia del cliente Kafka en auth.guard.ts. Pero, ¿cómo se inyecta una clase en guardia con @Inject? Solía crear un módulo @Global, que proporciona y exporta la clase Cliente Kafka, pero no está funcionando…

Tags:  , , ,

Answer

  1. Avatar for davy.ai
    exportar clase AuthGuard implements CanActivate {
      constructor(@Inject(KafkaClient) private _client: ClientKafka) {} <----- // TODO inyectar KafkaClient
    
      public async canActivate(contexto: ExecutionContext): Promise<boolean> {
        try {
    
          const solicitud = context.switchToHttp().getRequest();
          const autorización: string = solicitud.get('Authorization');
          ...código aquí simplemente enviar datos al servicio jwt...
    
          return true;
        } catch (err) {
          return false;
        }
      }
    }
    
    Para inyectar una clase en guard con <code>@Inject</code>, es necesario crear un módulo <code>@Global</code>, que proporcione y exporte la clase <code>KafkaClient</code>. Luego, se puede inyectar la clase <code>KafkaClient</code> en el constructor de <code>AuthGuard</code> utilizando el decorador <code>@Inject</code>.
    

Comments are closed.