티스토리 뷰

개발/node, express

세션

네스사 2023. 5. 2. 22:58

세션


  • 세션(session)이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법으로 쿠키와 함께 사용하여 쿠키의 약점을 보완합니다.
  • 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다.
  • 세션은 클라이언트가 서버에 요청을 보낼 때 생성되고, 서버는 이 요청에 대한 응답으로 세션 ID를 클라이언트에게 전송합니다.
  • 클라이언트는 이 세션 ID를 쿠키에 저장하여 이후의 모든 요청에서 쿠키에 세션 ID를 담아 전송하고, 서버는 이 세션 ID를 사용하여 해당 사용자의 세션 정보를 가져올 수 있습니다.
  • 쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장하지만, 세션은 서버 내부에 저장되며 세션의 키값만을 클라이언트 측에 남겨둡니다.

  • 대표적인 예시로는 로그인이 있습니다. 사용자가 로그인하면 서버는 해당 사용자의 ID를 세션에 저장합니다.
  • 이후 사용자가 다른 페이지로 이동할 때마다 세션 ID를 함께 전송하며, 서버는 이 세션 ID를 사용하여 해당 사용자의 ID를 가져올 수 있습니다.
  • 이를 통해 서버는 사용자가 로그인한 상태인지 아닌지를 파악할 수 있습니다. 
  • 로그아웃 시에는 res.cookie로 쿠키의 값을 무효한 값으로 변경하거나, res.clearCookie로 쿠키를 삭제해 버리면 됩니다.

 

express-session


  • express-session은 세션을 위한 미들웨어로, express 서버에서 쉽게 세션을 위한 공간을 다룰 수 있도록 만들어줍니다.
  • 쿠키로 전송된 세션 id는 이에 종속되는 고유한 세션 객체를 가지며 이는 서버에 저장됩니다.
  • 이때 세션 객체는 유저별로 독립적으로 생성된 객체이므로 유저별로 각각 다른 데이터를 저장할 수 있습니다.
const express = require('express');
const session = require('express-session');

const app = express();

app.use(
  session({
    secret: '@codestates', // 비밀키를 이용해 암호화해 세션 id라는 것을 생성
    resave: false,
    saveUninitialized: true,
    cookie: {
      domain: 'localhost',
      path: '/',
      maxAge: 24 * 6 * 60 * 10000,
      sameSite: 'none',
      httpOnly: false,
      secure: true,
    },
  })
);
  • 또,세션 객체는 req.session으로 접근할 수 있으며 임의의 데이터를 저장하거나 불러올 수 있습니다.

'개발 > node, express' 카테고리의 다른 글

액세스 토큰과 리프레시 토큰  (0) 2023.05.03
해싱과 토큰  (0) 2023.05.03
쿠키  (0) 2023.05.02
HTTPS 구현  (0) 2023.05.02
Node. js와 express의 기본 문법  (0) 2023.04.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함