[javascript] Express.js에서의 세션과 쿠키 관리

Express.js는 Node.js 기반의 웹 애플리케이션 개발에 매우 유용한 프레임워크입니다. 이번 포스트에서는 Express.js에서 세션과 쿠키를 어떻게 관리하는지에 대해 알아보겠습니다.

세션(Session)이란?

세션은 클라이언트와 서버 간의 상태 관리를 위한 기술입니다. 서버는 클라이언트에게 유일한 세션 ID를 부여하고, 이 ID를 사용하여 클라이언트의 상태를 추적합니다. 세션은 서버 측에서 데이터를 저장하므로, 클라이언트가 브라우저를 종료하거나 세션 타임아웃이 발생해도 데이터는 유지됩니다.

쿠키(Cookie)란?

쿠키는 클라이언트 측에서 상태를 저장하는 방법입니다. 서버는 클라이언트에게 HTTP 응답 헤더를 통해 쿠키를 전송하여 클라이언트에 저장됩니다. 이후 클라이언트는 해당 도메인에 대한 요청을 할 때마다 쿠키를 함께 전송하여 상태를 유지합니다.

Express.js에서의 세션과 쿠키 관리 방법

Express.js에서 세션과 쿠키를 관리하기 위해 express-sessioncookie-parser 미들웨어를 사용할 수 있습니다. 다음은 간단한 예제 코드입니다.

세션 관리

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

const app = express();

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

app.get('/login', (req, res) => {
  req.session.loggedIn = true;
  res.send('Logged in successfully');
});

app.get('/logout', (req, res) => {
  req.session.loggedIn = false;
  res.send('Logged out successfully');
});

app.get('/dashboard', (req, res) => {
  if (req.session.loggedIn) {
    res.send('Welcome to the dashboard');
  } else {
    res.send('Please login first');
  }
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

쿠키 관리

const express = require('express');
const cookieParser = require('cookie-parser');

const app = express();
app.use(cookieParser());

app.get('/setCookie', (req, res) => {
  res.cookie('myCookie', 'Hello, cookie!');
  res.send('Cookie set successfully');
});

app.get('/getCookie', (req, res) => {
  const myCookie = req.cookies.myCookie;
  res.send(`Cookie value: ${myCookie}`);
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

위의 코드에서는 express-session을 사용하여 세션을 관리하고, cookie-parser를 사용하여 쿠키를 관리합니다. express-sessionsecret 옵션은 세션 식별자를 암호화하기 위한 비밀 키를 지정하는데 사용됩니다.

결론

Express.js를 사용하여 세션과 쿠키를 쉽게 관리할 수 있습니다. 세션을 통해 서버 측에서 데이터를 저장하고 추적하고, 쿠키를 통해 클라이언트 측에서 상태를 유지할 수 있습니다. 이러한 기능은 사용자 인증, 세션 관리, 사용자 환경 설정 등 다양한 애플리케이션의 요구에 맞게 활용할 수 있습니다.

참고 자료