특정 라우트 핸들러가 실행되기 전에 요청을 처리하는 미들웨어
가드는 CanActivate
클래스 구현체를 implements하며, canActivate()
메서드를 통해 구현
true
를 반환하면, 요청은 다음 미들웨어 또는 핸들러로 진행false
를 반환하면, 요청을 즉시 중단 맟 HTTP 403 Forbidden 응답 반환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'];
}
}
@UseGuards()
데코레이터 사용import { Controller, Get, UseGuards } from '@nestjs/common';
import { AuthGuard } from './auth.guard';
@Controller('profile')
export class ProfileController {
@UseGuards(AuthGuard)
@Get()
getProfile() {
return '이것은 보호된 프로필 정보입니다.';
}
}