Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

Usando un decorador

5/22
Recursos

Aportes 2

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Comando para crear decorators:

nest g d auth/decorators/nombre --flat

Lo que hicimos

Esto aplica para ambos proyectos

Para proteger todo un controlador en lugar de solo una ruta en especifico, podemos asignarle el guard al controlador.

// src\app.controller.ts
...
@UseGuards(ApiKeyGuard)
@Controller()
...

Podemos crear un decorador para volver publico alguna ruta protegida.
Para ello, modificamos nuestro controlador

...
const isPublic = this.reflector.get('isPublic', context.getHandler());
    if (isPublic) {
      return true;
    }
const request = context.switchToHttp().getRequest<Request>();
    const authHeader = request.header('Auth');
    return authHeader === '1234';
  }

Creamos un decorador que nos facilite el envi贸 de metadata a la request

// src\auth\decorators\public.decortator.ts
import { SetMetadata } from '@nestjs/common'
export const IS_PUBLIC_KEY = 'isPublic';
export const Public = () => SetMetadata(IS_PUBLIC_KEY, true);

Ahora podemos declara como publico alguna ruta protegida

@Public() // usando el decorador
  @Get('nuevo')
  newEndpoint() {
    return 'yo soy nuevo';
  }