[TIL] NestJS 공부 10일차
지난 글에 이어 Guards에 대해 더 공부해보자
바인딩 가드
pipe와 마찬가지로 controller-scoped
, method-scoped
,global-scoped
로 쓰일 수 있다. 데코레이터는 @useGuards
를 사용해서 contoller-scoped
를 사용할 수 있다.
이 데코레이터는 하나의 인자를 갖을 수 있고 컴마로 구분하여 리스트를 받을 수 있다.
그리고 한번의 선언으로 설정을 적절하고 쉽게 적용할 수 있는 것이 장점이다.
@Controller('cats')
@UseGuards(RolesGuard)
export class CatsController {}
이렇게 한다면 위 컨트롤러가 선언한 모든 핸들러에 guard가 부착된다.
하나의 메서드에만 적용되길 원한다면 @UseGuards
의 method level에서 적용해주면 된다.
그리고 global-guard를 set하기 위해선 useGlobalGuards()
메서드를 사용하면된다.
const app = await NestFactory.create(AppModule);
app.useGlobalGuards(new RolesGuard());
말 그대로 global이니 전체 애플리케이션에서 사용된다. 의존성 주입 과정에서 위 메서드가 등록되면 의존성 주입을 할 수 없으므로 아래의 구조로 사용해야한다.
// app.module.ts
import { Module } from '@nestjs/common';
import { APP_GUARD } from '@nestjs/core';
@Module({
providers: [
{
provide: APP_GUARD,
useClass: RolesGuard,
},
],
})
export class AppModule {}
Author And Source
이 문제에 관하여([TIL] NestJS 공부 10일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ingyocode/TIL-NestJS-공부-10일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)