반응형
카카오톡 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
반응형