Cookie & Session

기술노트

쿠키 기반 세션 (Cookie Session) 예시

1. 개념 요약

쿠키(Cookie): 브라우저에 저장되는 데이터

세션(Session): 서버가 사용자 상태를 관리하는 방식

쿠키 세션(Cookie Session)

    • 세션 데이터를 서버가 아닌 쿠키에 직접 저장
    • 서버는 서명(Signature) 또는 암호화 검증만 수행

즉, 서버에 세션 저장소를 두지 않고 클라이언트 쿠키로 사용자 상태를 관리하는 방식이다.

2. 동작 흐름

사용자가 로그인 요청 서버가 사용자 정보를 포함한 서명된 쿠키 생성 브라우저가 쿠키 저장 이후 모든 요청에 쿠키 자동 전송 서버는 쿠키 검증 후 사용자 식별

3. HTTP 레벨 예시

3.1 로그인 응답

 HTTP/1.1 200 OK Set-Cookie: session=eyJ1c2VySWQiOjEyMywicm9sZSI6InVzZXIifQ==.signature; Path=/; HttpOnly; Secure; SameSite=Lax 

쿠키에 저장된 데이터(복호화 시):

 { "userId": 123, "role": "user" } 

3.2 이후 요청

 GET /mypage HTTP/1.1 Cookie: session=eyJ1c2VySWQiOjEyMywicm9sZSI6InVzZXIifQ==.signature 

서버는 쿠키를 검증하고 userId=123 사용자로 요청을 처리한다.

4. Node.js (Express) 예시

4.1 기본 설정

 const express = require('express'); const cookieSession = require('cookie-session'); const app = express(); app.use(cookieSession({ name: 'session', keys: ['secret-key-1', 'secret-key-2'], maxAge: 24 * 60 * 60 * 1000 // 1일 })); 

4.2 로그인 처리

 app.post('/login', (req, res) => { // 인증 성공 가정 req.session.user = { id: 123, role: 'user' }; res.send('로그인 성공'); }); 

4.3 세션 사용

 app.get('/mypage', (req, res) => { if (!req.session.user) { return res.status(401).send('로그인 필요'); } res.send(`사용자 ID: ${req.session.user.id}`); }); 

4.4 로그아웃

 app.post('/logout', (req, res) => { req.session = null; res.send('로그아웃 완료'); });