[Node.js] 세션 알아보고 적용하기

2024. 5. 16. 09:10·Node.js
목차
  1. 개발환경
  2. 세션이란?
  3. Session Store란?
  4. 기본 셋팅
  5. 👇🏻 참고
728x90
반응형

카카오톡 api를 설정하면서 세션을 등록하였다. 이에 대해서 글이 길어질까 싶어 글을 쪼갰다. 오늘은 session에 대해서 설명하고자 한다.

개발환경

  • Backend: Express + TypeScript + Node.js + MongoDB

세션이란?

  • Cookie방식과 다르게 데이터를 서버에 저장하는 방식
  • Server가 Client에 유일하고 암호화된 아이디(Session ID)를 부여

실제 데이터는 서버에 보관해 두고 각각의 유저들에 대한 고유 id 값을 쿠키에 저장하여 기록한다. 서버는 사용자의 ID값(Cookie에 저장되어 있는)을 비교 및 판단하여 어떤 사용자의 데이터인지와 그 사용자의 접속 여부를 판별할 수 있다.

Session Store란?

: 세션이 데이터를 저장하는 장소

대표적으로 세가지가 있다.

반응형

기본 셋팅

세션 셋팅
세션 셋팅

  • resave: false :: 모든 request마다 기존에 있던 session에 아무런 변경사항이 없을 시에도session을 다시 저장하는 옵션.
    • 변경사항도 없는 session이 매번 다시 저장되는 걸 막아 작동 효율을 높입니다.
  • saveUninitialized: false :: request가 들어오면 해당 request에서 새로 생성된 session에 아무런 작업이 이루어지지 않은 상황을 말합니다.
    • empty session obj가 쌓이는 걸 방지해 서버 스토리지를 아낄 수 있습니다.

1. session-file-store

npm install session-file-store

을 통해 session-file-store 모듈을 설치해주고

const FileStore = require('session-file-store')(session);

2. mysql-session

npm install express-mysql-session --save

을 통해 express-mysql-session 모듈을 설치해주고

const MySQLStore = require('express-mysql-session')(session);

해당 모듈을 이런식으로 불러온다음

var options = {
  host: "localhost",
  user: "root",
  password: "1234",
  database: "session_test",
};

var sessionStore = new MySQLStore(options);

3. memorystore

npm install memorystore

을 통해 memorystore 모듈을 설치해주고

const MemoryStore = require('memorystore')(session);

을 설정해주고 위의 기본셋팅을 써주고

메모리스토어 적용
메모리스토어 적용

store에 내가 설정하고자 하는 session store을 넣어주면 된다.

그러면 아래와 같이 데이터가 나온다.

"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},

세션이 쌓인 모습
세션이 쌓인 모습

나의 경우 defalut 저장소는 MemoryStore인데 이것을 사용할 경우 서버나 클라이언트가 꺼졌다가 켜지면 날아가는 휘발성이 된다.

👇🏻 참고

https://kong-dev.tistory.com/136#google_vignette

https://velog.io/@daeseongkim/Node.js-session-store의-물리적-위치

https://fierycoding.tistory.com/36

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
  1. 개발환경
  2. 세션이란?
  3. Session Store란?
  4. 기본 셋팅
  5. 👇🏻 참고
'Node.js' 카테고리의 다른 글
  • [Node.js] npm install과 npm ci의 차이 알아보기
  • [Node.js] kakao rest api로 카카오 로그인 적용하기
  • [Node.js] Tailwind CSS 적용하고 최적화하기
  • [Node.js] socket.io으로 양방향 통신 해보기
Uheeking
Uheeking
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking의 it로그안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking
Uheeking의 it로그
Uheeking
전체
오늘
어제

공지사항

  • 분류 전체보기 (254)
    • React (48)
    • Node.js (32)
    • Next.js (22)
    • Vue.js (15)
    • javascript (3)
    • Django (19)
    • etc (23)
    • Flutter (30)
    • Error (16)
    • AWS (11)
    • docker & Kubernetes (32)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
250x250

인기 글

태그

  • 도커
  • 장고
  • Props
  • MySQL
  • Vue.js
  • 티스토리챌린지
  • Express
  • mosquitto
  • Django
  • 리액트
  • node.js
  • SSR
  • flutter
  • supabase
  • 플러터
  • Create
  • React
  • sequelize
  • firebase
  • 쿠버네티스
  • useEffect
  • 오블완
  • next.js
  • 노드
  • docker
  • NEXT
  • 넥스트
  • error
  • Kubernetes
  • AWS

최근 댓글

최근 글

250x250
hELLO· Designed By정상우.v4.5.2
Uheeking
[Node.js] 세션 알아보고 적용하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.