자바스크립트로 구현하는 NestJS 서버의 세션 관리 방법

NestJS는 Node.js 기반의 프레임워크로, 서버 사이드 애플리케이션을 개발하기 위해 사용됩니다. 이 프레임워크를 사용하여 세션 관리를 구현하는 방법에 대해 알아보겠습니다.

세션 관리란?

세션은 클라이언트와 서버 간의 연결을 유지하고 클라이언트의 상태를 저장하기 위해 사용됩니다. 세션은 사용자 인증, 사용자 정보, 장바구니 등과 같은 중요한 데이터를 저장하는 데 사용됩니다. NestJS에서 세션 관리를 위해 주로 express-session 패키지를 사용합니다.

세션 관리를 위한 패키지 설치

먼저 세션 관리를 위해 express-session 패키지를 설치해야 합니다. 이를 위해 터미널에서 다음 명령을 실행합니다:

npm install express-session

세션 미들웨어 설정

NestJS에서 세션을 사용하기 위해 미들웨어를 설정해야 합니다. AppModule 클래스의 configure 메서드 내에서 다음과 같이 코드를 작성합니다:

import { NestFactory, HttpAdapterHost } from '@nestjs/core';
import { AppModule } from './app.module';
import * as session from 'express-session';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  const { httpAdapter } = app.get(HttpAdapterHost);

  app.use(
    session({
      secret: 'your-secret-key',
      resave: false,
      saveUninitialized: false,
    }),
  );

  await app.listen(3000);
}
bootstrap();

위 코드에서 secret 값은 세션을 암호화하기 위한 비밀키입니다. 보안을 위해 반드시 복잡한 값으로 설정해야 합니다. resavesaveUninitialized 옵션은 세션의 수정 및 초기화를 제어합니다.

세션 사용

세션을 사용하기 위해 컨트롤러에서 request 객체를 통해 세션 데이터에 접근할 수 있습니다. 다음은 간단한 예시 코드입니다:

import { Controller, Get, Request } from '@nestjs/common';

@Controller('user')
export class UserController {
  @Get('profile')
  getProfile(@Request() req) {
    return req.session.user;
  }
}

위 코드에서 getProfile 메서드는 현재 로그인한 사용자의 프로필을 반환합니다. 이를 위해 req.session.user를 사용합니다.

세션 저장소 및 기타 설정

기본적으로 express-session은 메모리를 사용하여 세션을 저장합니다. 하지만 실제 운영 환경에서는 메모리에 저장하는 것보다 외부 세션 저장소를 사용하는 것이 좋습니다. 이를 위해 express-session 패키지의 store 옵션을 설정하여 다양한 외부 세션 저장소를 사용할 수 있습니다.

세션 설정에 대한 자세한 내용은 express-session 문서를 참조하시기 바랍니다.

이제 자바스크립트로 구현하는 NestJS 서버에서 세션 관리를 위한 기본적인 개념과 구현 방법을 알아보았습니다. 세션은 사용자 경험 및 보안을 향상시키는 데 중요한 역할을 합니다. NestJS를 사용하여 안전하고 효율적인 세션 관리를 구현해 보세요!

#NestJS #세션