NestJs - Middleware

choko's avatar
Jun 29, 2024
NestJs - Middleware
 

Middleware

  • module 파일에 다음과 같이 사용
    • MiddlewareConsumer 를 import 해서 사용한다
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common'; import { LoggerMiddleware } from './common/middleware/logger.middleware'; import { CatsModule } from './cats/cats.module'; @Module({ imports: [CatsModule], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer .apply(LoggerMiddleware) .exclude( // 제외할 미들웨어 경로 set { path: 'cats', method: RequestMethod.GET }, { path: 'cats', method: RequestMethod.POST }, 'cats/(.*)', // exclude, forRoutes 경로에 와일드카드를 사용할 수 있다 .forRoutes('cats'); } }
 
import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; @Injectable() export class LoggerMiddleware implements NestMiddleware { use(req: Request, res: Response, next: NextFunction) { console.log('Request...'); next(); } }
 
 

Global middleware

  • 미들웨어를 글로벌하게 사용하고 싶으면 main에서 app.use()를 사용한다.
const app = await NestFactory.create(AppModule); app.use(logger); await app.listen(3000);
 
 

Helmet

  • 웹서버를 외부의 공격으로부터 보호해주는 대표적인 노드 보안 모듈
  • 여러 보안 미들웨어 모듈을 합쳐 놓은 express 패키지 모듈이다.
  • 사용법(기본 설정)
    • app.use(helmet());
  • 효과
    • dnsPrefetchControl
    • frameguard
    • hidePoweredBy
    • hsts
    • ieNoOpen
    • noSniff
    • xssFilter
    • 등등의 보안 관련 ..
Share article

Tom의 TIL 정리방