[nodejs] 세션 공유 방법

Node.js 애플리케이션에서 세션을 공유하는 것은 여러 서버간에 동일한 사용자 상태를 유지하는 데 중요합니다. 이 글에서는 Node.js 애플리케이션 내에서의 세션 공유 방법에 대해 알아보겠습니다.

세션 저장소 사용

세션 공유를 위해 서로 다른 서버 간에 사용자 세션을 동기화해야 합니다. 이를 위해 서버 간에 세션을 저장할 수 있는 저장소가 필요합니다. Redis, MongoDB, Memcached 등의 외부 데이터베이스를 사용하여 세션을 공유하는 방법이 있습니다.

이러한 외부 저장소를 사용하면 여러 서버 간에 동일한 세션 데이터에 접근할 수 있으며, 이를 통해 사용자가 여러 서버에 걸쳐 일관된 상태를 유지할 수 있습니다.

다음은 Express 애플리케이션에서 Redis를 세션 저장소로 사용하는 예시입니다.

const session = require('express-session');
const redis = require('redis');
const redisStore = require('connect-redis')(session);

const client = redis.createClient({
  host: 'localhost',
  port: 6379
});

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

위 코드에서 express-session 미들웨어를 사용하여 세션을 설정하고, connect-redis를 사용하여 Redis를 세션 저장소로 연동하고 있습니다.

도메인 간 쿠키 공유

서브도메인 간 세션 공유를 위해 쿠키 도메인을 설정할 수 있습니다. 이는 여러 서브도메인 간에 사용자 세션을 공유하는 데 유용합니다.

app.use(session({
  key: 'session-cookie-name',
  secret: 'your-secret-key',
  resave: false,
  saveUninitialized: false,
  cookie: {
    domain: '.yourdomain.com',
    maxAge: 24 * 60 * 60 * 1000 // 24시간
  }
}));

위 코드에서 cookie 속성을 사용하여 쿠키의 도메인을 설정하고 있습니다.

마치며

Node.js 애플리케이션에서 세션 공유는 여러 서버 간에 사용자 상태를 동기화하는 데 중요한 요소입니다. 외부 세션 저장소를 활용하거나 쿠키 도메인을 설정하는 등의 방법을 통해 세션을 공유할 수 있습니다. 각 방법은 애플리케이션의 특정 요구 사항과 환경에 맞게 선택하여 사용할 수 있습니다.

참고문헌: express-session 공식 문서, connect-redis 공식 문서