본문 바로가기
TIL

[TIL] 쿠키와(Cookie) 세션(Session)

by 쾌횽 2024. 1. 30.
반응형

 

🍪 쿠키(Cookie)

  • 브라우저가 웹 사이트를 방문할 때마다 이전에 방문했던 정보를 기억하는 데이터 파일이다.
  • 쿠키가 있기 때문에 여러 페이지를 이동할 때마다 로그인을 하지 않고 사용자 정보를 유지 할 수 있다.
  • 데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약하다
  • 지워도 되고, 보안이 취약해도 큰 일이 없는 수준의 정보들을 브라우저에 저장한다

🍪  쿠키 만들어보기

// 'Set-Cookie'를 이용하여 쿠키를 할당하는 API

app.get("/set-cookie", (req, res) => {
  let expire = new Date();
  expire.setMinutes(expire.getMinutes() + 60); // 만료 시간을 60분으로 설정합니다.

  res.writeHead(200, {
    'Set-Cookie': `name=sparta; Expires=${expire.toGMTString()}; HttpOnly; Path=/`,
  });
  return res.end();
});

🍪 쿠키 조회해보기

// 'req.headers.cookie'를 이용하여 클라이언트의 모든 쿠키를 조회하는 API
app.get('/get-cookie', (req, res) => {
  const cookie = req.headers.cookie;
  console.log(cookie); // name=sparta
  return res.status(200).json({ cookie });
});

🍪 Cookie-parser

Cookie-parser미들웨어는 요텅에 추가된 쿠키를 req.cookies객체로 만들어준다. req.header.cookie와 같이 번거롭게 사용하지 않아도된다.

// 설치
yarn add cookie-parser

// 미들웨어 전역으로 사용
app.use(cookieParser())
import cookieParser from 'cookie-parser';

app.use(cookieParser());

// 'req.cookies'를 이용하여 클라이언트의 모든 쿠키를 조회하는 API

app.get('/get-cookie', (req, res) => {
  const cookies = req.cookies;
  console.log(cookies);
  return res.status(200).json({ cookie: cookies });
});

 

🔐 세션(Session)

  • 쿠키를 기반으로 구성된 기술로, 인증 정보를 쿠키가 아닌, 서버 측에서 저장하고 관리하는 방식이다
  • 사용자가 많아질수록 서버 자원을 많이 차지한다.
  • 클라이언트에서 Request를 보내면, 해당 서버에서 클라이언트에게 유일한 ID를 부여하는데 이것이 세션ID이다.
  • 브라우저를 닫거나, 서버에서 세션을 삭제했을때 삭제되므로, 쿠키보다 보안이 좋다

🔐 /set-session API 만들기

let session = {};
app.get('/set-session', function (req, res, next) {
  // 현재는 sparta라는 이름으로 저장하지만, 나중에는 복잡한 사용자의 정보로 변경될 수 있습니다.
  const name = 'sparta';
  const uniqueInt = Date.now();
  // 세션에 사용자의 시간 정보 저장
  session[uniqueInt] = { name };

  res.cookie('sessionKey', uniqueInt);
  return res.status(200).end();
});
  • 서버에서 해당 사용자의 정보를 저장하기 위해 session객체를 생성
  • /set-session API가 호출되면 name=sparta의 정보를 세션에 삽입하고, 해당하는 데이터를 검색하기 위한 시간 정보를 쿠키로 반환한다

🔐 /get-session API 만들기

app.get('/get-session', function (req, res, next) {
  const { sessionKey } = req.cookies;
  // 클라이언트의 쿠키에 저장된 세션키로 서버의 세션 정보를 조회합니다.
  const name = session[sessionKey];
  return res.status(200).json({ name });
});
  • 쿠키에 저장된 sessionKey를 이용하여 session에 저장된 데이터를 불러온다.
반응형

'TIL' 카테고리의 다른 글

[TIL] JWT(Json Web Token)  (0) 2024.02.02
[TIL] 개인과제 초기 설계  (0) 2024.01.31
[TIL] 트랜잭션(Transaction)  (1) 2024.01.29
[TIL] JS 프로그래머스 - K번째 수  (0) 2024.01.26
[TIL] SQL과 종류  (0) 2024.01.25

댓글