서버에서 HTTP Session 사용하기

개발자·2022년 9월 16일
0
post-thumbnail

Session이란?

  • 브라우저가 아닌 서버에 저장되는 쿠키
  • 사용자가 서버에 접속한 시점부터 연결을 끝내는 시점을 하나의 상태로 보고 유지하는 기능을 함 > 로그인 유지
  • 서버는 각 사용자에 대한 세션을 발행하고 서버로 접근(Request)한 사용자를 식별하는 도구로 사용
  • 쿠키와 달리 저장 데이터에 제한이 없음
  • 만료 기간 설정이 가능하지만, 브라우저가 종료되면 바로 삭제
  • 사용자가 최초로 서버 연결을 하면 하나의 Session-ID(임의의 긴 문자열) 가 발행
  • 발행 된 Session-ID 는 서버와 브라우저의 메모리에 쿠키 형태로 저장
  • 서버는 사용자가 서버에 접근 시, 쿠키에 저장 된 Session-ID를 통해서 서버는 사용자를 구분하고 요청에 대한 응답을 함

Cookie VS Session

  • 쿠키와 세션이 하는 역할은 비슷
  • 쿠키는 로컬에 저장 되므로 보안 이슈가 발생 가능성이 있음
  • 세션은 로컬에 session-id 만 저장하고, 데이터는 서버에서 처리하므로 보안이 우수
  • 단, 쿠키데이터를 바로 저장하고 있으므로 속도가 빠름.
  • 세션은 쿠키에서 session-id 를 읽어서 서버에서 데이터를 받아야 하므로 속도는 더 느림

Session Module 추가하기

npm i express-session -s
  • 위 코드로 express-session 모듈 부터 설치
const session = require('express-session’);
const app = express();
app.use(
  session({
    secret: '원하는 비밀코드 아무거나 입력해주세요.',
    resave: false,
    saveUninitialized: true,
    cookie: {
      maxAge: 1000 * 60 * 60,
    },
  })
);
  • 이후 위 코드로 모듈 추가 및 미들웨어 연결

Session Module 옵션 설명

  • secret: 세션을 발급할 때 사용되는 키 값(아무거나 입력 가능)
  • resave: 모든 request 마다 기존에 있던 session에 아무런 변경사항이 없어도 session 을 다시 저장하는 옵션
  • saveUninitialized: 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할지 설정
  • secure > https 에서만 세션을 주고받을 수 있습니다. http 에서는 세션을 주고받는 것이 불가능
  • cookie : 세션 쿠키 설정 (세션 관리 시 클라이언트에 보내는 쿠키)
    • maxAge: 쿠키의 생명 기간이고 단위는 ms입니다.
    • httpOnly > 자바스크립트를 통해서 세션을 사용할 수 없도록 강제
profile
I DEVELOP THEREFORE, I AM 😄

0개의 댓글