[javascript] Express.js에서의 세션 관리 방법

웹 애플리케이션에서 사용자의 상태를 유지하기 위해 세션(session)은 중요한 요소입니다. Express.js는 세션을 쉽게 관리할 수 있는 강력한 도구를 제공합니다. 이 포스트에서는 Express.js에서의 세션 관리 방법에 대해 알아보겠습니다.

세션(Session)이란?

세션은 서버와 클라이언트 간의 상태를 유지하기 위한 방법입니다. 클라이언트가 서버에 접속하면 서버는 해당 클라이언트를 위한 고유한 세션을 생성하고, 이 세션을 통해 클라이언트와 상호작용합니다. 세션은 쿠키를 사용하여 식별되며, 서버는 해당 세션에 대한 정보를 저장하고 조회할 수 있습니다.

Express.js에서의 세션 관리

Express.js에서 세션을 관리하기 위해 express-session이라는 미들웨어를 사용할 수 있습니다. 이 미들웨어를 사용하면 간단하게 세션을 초기화하고, 세션 데이터를 저장하고 조회할 수 있습니다.

먼저, express-session 미들웨어를 설치합니다.

npm install express-session

다음은 Express.js 애플리케이션에서 세션을 초기화하는 예제입니다.

const express = require('express');
const session = require('express-session');

const app = express();

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

위 예제에서 secret은 세션 쿠키를 암호화하기 위한 비밀 키입니다. 이 비밀 키는 실제 애플리케이션에서 안전하게 관리되어야 합니다. resave는 세션 데이터가 변경되지 않아도 매번 저장할 것인지 여부를 결정하는 옵션입니다. saveUninitialized는 초기화되지 않은 세션을 저장할 것인지 여부를 결정하는 옵션입니다.

세션을 저장하고 조회하기 위해 다음과 같이 세션 객체를 사용할 수 있습니다.

app.get('/login', (req, res) => {
  // 로그인 처리 로직
  
  // 세션 데이터 저장
  req.session.username = 'johndoe';
  
  res.send('로그인 성공');
});

app.get('/profile', (req, res) => {
  // 로그인 여부 확인
  if (req.session.username) {
    // 세션 데이터 조회
    const username = req.session.username;
    
    res.send(`환영합니다, ${username}님`);
  } else {
    res.send('로그인이 필요합니다');
  }
});

위 예제에서 /login 라우트에서는 로그인 처리 후 세션 데이터를 저장합니다. /profile 라우트에서는 저장된 세션 데이터를 조회하여 해당하는 화면을 제공합니다.

결론

Express.js에서 세션을 관리하는 방법에 대해 알아보았습니다. express-session 미들웨어를 사용하면 간단하게 세션을 초기화하고, 세션 데이터를 저장하고 조회할 수 있습니다. 세션을 통해 사용자의 상태를 유지하고 웹 애플리케이션의 보안성을 향상시킬 수 있습니다.

더 자세한 내용은 공식 Express.js 문서를 참고해주세요.