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 鈥攆lat

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