image.png

특정 라우트 핸들러가 실행되기 전에 요청을 처리하는 미들웨어

가드 구현하기

가드는 CanActivate 클래스 구현체를 implements하며, canActivate() 메서드를 통해 구현

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

@Injectable()
export class AuthGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ): boolean | Promise<boolean> | Observable<boolean> {
    const request = context.switchToHttp().getRequest();
    // 요청 헤더에 'Authorization' 토큰이 있는지 확인하는 로직
    // 실제로는 토큰의 유효성을 검증하는 복잡한 로직이 들어갑니다.
    return !!request.headers['authorization'];
  }
}

가드 사용하기

import { Controller, Get, UseGuards } from '@nestjs/common';
import { AuthGuard } from './auth.guard';

@Controller('profile')
export class ProfileController {
  @UseGuards(AuthGuard)
  @Get()
  getProfile() {
    return '이것은 보호된 프로필 정보입니다.';
  }
}