티스토리 뷰
세션
- 세션(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 |
댓글