Node.js의 Express와 express-session을 활용한 세션 구현 방법

Node.js의 Express와 express-session을 활용한 세션 구현 방법

이 글에서는 Node.js의 Express 프레임워크와 express-session 미들웨어를 사용하여 웹 애플리케이션에서 세션을 구현하는 방법을 알아봅니다. 세션은 사용자의 상태 정보를 서버에 저장하여 사용자가 웹 사이트를 탐색할 때 지속성을 유지할 수 있도록 도와주는 중요한 기술입니다.

세션의 기본 이해

세션은 웹 애플리케이션에서 사용자의 상태와 데이터를 유지 관리하는 방법입니다. HTTP는 기본적으로 상태가 없는 프로토콜이기 때문에, 서버는 요청을 받을 때마다 각 요청을 독립적으로 처리합니다. 세션을 사용하면 웹 서버는 사용자의 정보를 지속적으로 유지할 수 있으며, 사용자가 여러 페이지를 이동하거나 인터랙션을 하는 동안에도 그 상태를 계속해서 추적할 수 있습니다.

세션 작동 원리

  1. 세션 생성: 사용자가 웹사이트에 처음 접속하면 서버는 세션 ID를 생성합니다. 이 ID는 유니크하며, 서버가 사용자를 식별하는 데 사용됩니다.
  2. 세션 ID 저장: 생성된 세션 ID는 보통 쿠키에 저장되어 사용자의 브라우저로 전송됩니다. 이 쿠키는 브라우저가 서버에 다시 요청을 보낼 때마다 함께 전송됩니다.
  3. 서버에서 세션 사용: 서버는 받은 세션 ID를 사용하여 해당 사용자의 세션 데이터에 접근합니다. 이 데이터는 서버에 저장되어 있으며, 사용자의 로그인 상태, 프로필 설정, 장바구니 항목 등을 포함할 수 있습니다.
  4. 세션 만료: 세션은 일정 시간 후에 만료될 수 있으며, 이는 웹 애플리케이션의 보안을 강화하는 데 도움이 됩니다. 사용자가 로그아웃하거나 오랫동안 활동이 없을 경우 세션을 종료할 수 있습니다.

express-session 모듈 설치

세션 관리를 위해 ‘express-session’ 미들웨어를 사용하려면 먼저 모듈을 설치해야 합니다. 이 모듈은 Express 애플리케이션에서 세션을 쉽게 관리할 수 있게 해줍니다. npm을 사용하여 설치할 수 있습니다.

npm install express-session

이 명령은 프로젝트에 ‘express-session’을 추가하고, 필요한 세션 관리 기능을 사용할 수 있도록 합니다.

Express에서 세션 구현하기

Express 애플리케이션에서 세션을 구현하기 위해 express-session 미들웨어를 사용합니다. 이 미들웨어는 세션 관리를 위한 다양한 옵션을 제공하며, 쉽게 통합하여 안전하게 사용할 수 있습니다.

// Express 모듈과 세션 미들웨어 모듈을 불러옵니다.
const express = require('express');
const session = require('express-session');

// Express 애플리케이션 인스턴스를 생성합니다.
const app = express();

// 세션 설정을 초기화합니다. 여기에는 세션 비밀키, 초기화 정책, 재저장 정책 및 쿠키 설정이 포함됩니다.
app.use(session({
    secret: 'your_secret_key',  // 세션 암호화 키
    saveUninitialized: true,    // 초기화되지 않은 세션을 저장
    resave: false,              // 세션을 항상 저장할지 설정
    cookie: {
        maxAge: 3600000 // 쿠키의 최대 생존 기간 (1시간)
    }
}));

// 루트 URL ('/')에 대한 GET 요청을 처리합니다.
app.get('/', (req, res) => {
    if (req.session.views) {
        req.session.views++; // 세션에 저장된 views 카운터를 증가
        res.send(`<p>Number of views: ${req.session.views}</p>`); // 사용자가 페이지를 몇 번 방문했는지 표시
    } else {
        req.session.views = 1; // views 카운터를 세션에 초기화
        res.send("Welcome to this page for the first time!"); // 첫 방문 메시지
    }
});

// 3000번 포트에서 서버를 시작하고, 서버가 실행되면 콘솔에 메시지를 출력합니다.
app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

위 코드는 세션을 설정하고, 방문자가 사이트를 몇 번 방문했는지 추적하는 간단한 예제를 보여줍니다. 사용자의 세션 정보는 서버에 저장되며, 세션 쿠키를 통해 클라이언트와 연결됩니다.

실행 결과 화면

Express에서 세션 구현 예제 코드 실행 화면 1
Express에서 세션 구현 예제 코드 실행 화면 2

참고 사이트

세션은 사용자의 웹 경험을 개인화하고, 보안을 강화하는 데 매우 중요합니다. 올바르게 구현된 세션 관리는 애플리케이션의 전반적인 성능과 사용자 만족도를 크게 향상시킬 수 있습니다.

관련 이전 게시글

이 글이 도움이 되셨다면 공유 부탁 드립니다.

위로 스크롤