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 공식 문서