학습 - 세션(session)의 학습

YoonSuk Choi·2025년 1월 2일

7주차

목록 보기
3/10

1. Session이란?

  • Session(세션)은 클라이언트와 서버 간의 상태를 유지하기 위해 사용

2. Session의 동작 방식

  • 세션 생성: 클라이언트가 서버에 처음 접속할 때 세션 ID가 생성되며, 이 ID는 클라이언트의 쿠키에 저장
  • 세션 확인: 클라이언트가 서버에 요청을 보낼 때, 저장된 세션 ID를 사용하여 서버는 클라이언트의 상태 정보를 확인
  • 세션 삭제: 일정 시간 동안 활동이 없거나 로그아웃 시 세션은 삭제

3. 코드 설명

사용한 코드: session.js

const express = require("express");
const session = require("express-session");
const app = express();
const PORT = 8080;

app.set("view engine", "ejs");

// session 미들웨어 등록
app.use(
  session({
    secret: "secret Key",
    resave: false,
    saveUninitialized: false,
    cookie: {
      httpOnly: true,
      maxAge: 10 * 60 * 1000, // 10분짜리 세션 쿠키
    },
  }),
);

app.get("/", (req, res) => {
  res.render("session");
});

// 세션 설정
app.get("/set", (req, res) => {
  req.session.name = "allie";
  res.send("session 설정 완료");
});

// 세션 확인(가져오기)
app.get("/get", (req, res) => {
  console.log(req.session);
  res.send({ id: req.sessionID, name: req.session.name });
});

// 세션 삭제
app.get("/destroy", (req, res) => {
  req.session.destroy((err) => {
    if (err) throw err;
    res.send("세션 삭제 완료");
  });
});

app.listen(PORT, () => {
  console.log(`http://localhost:${PORT}`);
});

코드 설명

  1. 세션 미들웨어 등록:

    • secret: 세션 데이터를 암호화할 때 사용되는 키값.
    • resave: 세션이 수정되지 않으면 저장하지 않음.
    • saveUninitialized: 저장할 데이터가 없어도 세션을 초기화.
    • cookie: 세션 쿠키의 옵션 설정 (HTTPOnly, 만료 시간 등).
  2. 세션 설정:

    • /set: 클라이언트의 세션에 name: allie 값을 저장.
  3. 세션 확인:

    • /get: 세션 ID와 저장된 데이터를 조회.
  4. 세션 삭제:

    • /destroy: 세션 데이터를 삭제.

4. 실습 결과

사용한 코드: session.ejs

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>session</title>
  </head>
  <body>
    <h1>session 확인하기</h1>
    <a href="/set">세션 설정</a>
    <a href="/get">세션 확인</a>
    <a href="/destroy">세션 삭제</a>
  </body>
</html>

설명

  • 세션 설정 버튼: /set 경로로 이동하여 세션 설정.
  • 세션 확인 버튼: /get 경로로 이동하여 현재 세션 확인.
  • 세션 삭제 버튼: /destroy 경로로 이동하여 세션 삭제.

5. 결론 및 학습 포인트

학습 포인트

  1. 세션을 활용하여 클라이언트의 상태 정보를 유지하고 관리할 수 있음.
  2. 세션 미들웨어 설정을 통해 보안 및 성능을 최적화할 수 있음.
  3. 세션의 설정, 조회, 삭제를 코드로 구현하고 테스트함.

결론

세션 관리 시스템을 활용하면 사용자 로그인 상태나 일시적인 데이터 저장 등을 쉽게 구현할 수 있다.

profile
Name : 최윤석(YoonSuk Choi)

0개의 댓글