1. Guards
- Nest.js에서 Guard란 라우팅되기 전에 실행되는 미들웨어
- 일반적으로 Guard는 인증, 권한 부여, 입력 유효성 검사 등과 같은 작업을 수행
2. 사용하기
- @Injectable() 데코레이터를 사용하여 클래스를 작성
- 인터페이스를 구현 후 메서드를 구현하여 Guard 로직을 작성
import { Injectable, CanActivate, ExecutionContext } 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();
return this.validateRequest(request);
}
private validateRequest(request: any): boolean {
// 여기에 요청을 유효성 검사하는 로직을 작성합니다.
// 예를 들어, 요청의 헤더에 토큰이 있는지 확인할 수 있습니다.
return !!request.headers.authorization;
}
}
- 인증이 성공하면 true를 반환하고, 실패하면 false를 반환
import { Controller, Get, UseGuards } from '@nestjs/common';
import { AuthGuard } from './auth.guard';
@Controller('users')
export class UsersController {
@Get()
@UseGuards(AuthGuard)
findAll() {
// 이 메서드는 인증된 요청만 처리합니다.
return 'Authenticated users';
}
}
- @UseGuards 데코레이터를 이용하여 특정 엔드포인트에 요청을 Guard로 확인할 수 있다.
'JavaScript Dev. > Nest.js' 카테고리의 다른 글
Nest.js - middleware (0) | 2024.03.01 |
---|---|
Nest.js - Provider (0) | 2024.02.28 |
Nest.js - Controller (0) | 2024.02.28 |
Nest.js - Module (0) | 2024.02.28 |
Nest.js 설치부터 기본 개념까지 (1) | 2024.02.06 |