Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

250
Visualizações
NestJS setMetadata no funciona desde authGuard

Tengo algunos decoradores que, cuando los llamo, quiero configurar Metadata para usarlos en mi registro. En mi controlador, tengo estos:

 @Post("somePath") @Permission("somePermission") @UseGuards(JwtAuthGuard) @HttpCode(200) @Grafana( "endpoint", "functionalmap" ) async getSubscriptionFromPwebFormFilter( @Body(ValidationPipe) someDto: someDtoType ): Promise<ISuccessResponse> { // some logic }

En mis decoradores, quiero configurar algunos datos en los metadatos para usar en mi interceptor de registro,

Decorador Grafana:

 export const Grafana = (functionalMap: string, endpoint: string) => applyDecorators( SetMetadata("endpoint", endpoint), SetMetadata("functionalMap", functionalMap) );

Decorador de AuthGuard:

 @Injectable() export class JwtAuthGuard extends AuthGuard("jwt") { constructor( private readonly reflector: Reflector, private readonly someService: SomeService ) { super(); } public async canActivate(context: ExecutionContext): Promise<boolean> { const role = this.reflector.get<string>("permission", context.getHandler()); const request = context.switchToHttp().getRequest(); const { valueToLog } = request.body; const jwtToken = request.headers.authorization; console.log("check value exist", valueToLog); SetMetadata("valueToLog", valueToLog); }

Ahora, en mi interceptor de registro, obtengo todos los valores de los metadatos de esta manera:

 @Injectable() export default class LoggingInterceptor { constructor(private readonly reflector: Reflector) {} intercept(context: ExecutionContext, next: CallHandler) { const executionStart = Date.now(); return next.handle().pipe( tap((responseData) => { const response = context.switchToHttp().getResponse<ServerResponse>(); const { statusCode } = response; const valueToLog = this.reflector.get( "valueToLog", context.getHandler() ); // this is undefined const endpoint = this.reflector.get("endpoint", context.getHandler()); // this have value const functionalMap = this.reflector.get( "functionalMap", context.getHandler() ); // this have value ... // some logic }) ); } }

En mi caso, el valor de punto final y mapa funcional se puede recuperar del reflector, sin embargo, valueToLog aparece como indefinido,

¿La configuración de metadatos no funciona para el decorador de protección de autenticación?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda