Menu
CoddyTech

Guard'lar

Coddy'nin Node.js Journey'sinin TypeScript ve NestJS bölümünün bir parçası. Ders 14 / 17.

Herkes görev oluşturabilir veya silebilir. Bir koruma, isteğin işleyiciye ulaşıp ulaşamayacağına karar verir: Nest, canActivate yöntemini çağırır ve bu yöntem false döndürdüğünde Nest, yöntemi çalıştırmadan 403 Forbidden yanıtı verir.

@Injectable()
export class OpenHoursGuard implements CanActivate {
    canActivate(context: ExecutionContext): boolean {
        const hour = new Date().getHours();
        return hour >= 9 && hour < 17;
    }
}

@Post()
@UseGuards(OpenHoursGuard)
book() {}

context.switchToHttp().getRequest() isteği verir; Node, başlık adlarını küçük harflerle saklar, bu nedenle request.headers['x-api-key'] değerini okuyun. Bir yöntem üzerindeki @UseGuards, o yöntemi korur. Denetleyici sınıfı üzerindeyse sınıftaki her yöntemi korur.

challenge icon

Görev

Kolay
  • ApiKeyGuard'ı tamamla: yalnızca x-api-key başlığı process.env.API_KEY değerine eşitse isteğin geçmesine izin ver (bu derste tasks-key-123 ayarlanır).
  • POST /tasks ve DELETE /tasks/:id uç noktalarını koru; okuma işlemleri açık kalsın.
  • Bir başlıkla POST /tasks isteği gönder: 403. x-api-key: tasks-key-123 başlığını ekleyip isteği yeniden gönder: 201. GET /tasks bu başlık olmadan yanıt verir.

Kendin dene

import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';

@Injectable()
export class ApiKeyGuard implements CanActivate {
    canActivate(context: ExecutionContext): boolean {
        // İsteğe yalnızca x-api-key başlığı
        // process.env.API_KEY değerine eşitse izin ver.
        return true;
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

TypeScript ve NestJS bölümündeki tüm dersler