Introducción a Guards

4/22
Recursos

Aportes 4

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Por si alguno tiene dudas sobre qué se puede hacer una vez el proyecto esté completado…
Les dejo un proyecto propio de fake ecommerce que usa como base esta API (tiene modificaciones y detalles para adaptarla a mi proyecto). El frontend está hecho con React
Link aquí
Saludos a todos

Lo que hicimos

Esto aplica para ambos proyectos

nest g mo auth
nest g gu auth/guards/apiKey --flat

Configuración del guard

import { CanActivate, ExecutionContext, Injectable, UnauthorizedException } from '@nestjs/common';
import { Observable } from 'rxjs';
import { Request } from 'express';

@Injectable()
export class ApiKeyGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ): boolean | Promise<boolean> | Observable<boolean> {
    const request = context.switchToHttp().getRequest<Request>();
    const authHeader = request.header('Auth');
    const isAuth = authHeader === '1234';
    if (!isAuth) {
      throw new UnauthorizedException('not allow');
    }
    return true;
  }
}

Protegiendo una ruta

@UseGuards(ApiKeyGuard)
  @Get('nuevo')
  newEndpoint() {
    return 'yo soy nuevo';
  }

4 artefactos principales en el framework


Controllers

Providers

Pipes

Guards


Los Guards nos ayudarán a brindar cada uno de los endpoints en el controller, y nos dirá si tiene o no autorización.


Ejecutamos nest g mo auth para crear un módulo nuevo, y generamos el guard con nest g gu auth/guards/apiKey —flat

Por cierto, el @UseGuard( … ) hay que importarlo de
import { …, UseGuards } from ‘@nestjs/common’;