웹 애플리케이션에서 사용자의 상태를 유지하기 위해 세션(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 문서를 참고해주세요.