리셋 되지 말자

[express] session store 본문

NodeJS/생활코딩

[express] session store

kyeongjun-dev 2020. 9. 27. 19:17

세션 저장소

세션 데이터의 저장소를 세션 저장소라고 한다. 이를 변경하는 방법을 알아본다.

(expressjs.com/en/resources/middleware/session.html)사이트 아래쪽에

Compatible Session Stores라는 항목을 확인할 수 있다.

이중에서 간편하게 사용이가능한 session-file-store을 사용해본다.(www.npmjs.com/package/session-file-store)

 

session file store

npm install -s session-file-store

설치를 한다.

 

var express = require('express')
var parseurl = require('parseurl')
var session = require('express-session');
var FileStore = require('session-file-store')(session);


var app = express()

app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  store:new FileStore()
}));

모듈을 선언하고, app.use(session)에 store라는 옵션을 추가한다. new FileStore()에서 동작방식을 다르게 하기위해서는 Options 값들을 () 안에 추가하면 된다.

그리고나서 실행을 하면,

express-session.j를 실행한 디렉토리에 sessions라는 새로운 디렉토리가 생성된다. 그리고 localhost:3000으로 접속을 한다.

접속을 하면 위와같이 파일이 생성된다. 

{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},
"num":2,"__lastAccess":1601201374149}

새로고침을 하면, 파일 내용중 "num"의 값이 1씩 증가하는 것을 확인할 수 있다.

 

사용자가 session id를 가지고 있는 상태에서 서버로 접속을 하면, request Header의 쿠키값으로 서버쪽으로 session id를 전달한다.

 

그렇게되면 session 미들웨어가 session id를 가지고 session store에서 아이디값에 대응되는 파일을 읽어서 request객체의 session이라는 객체를 추가한다. 이때 num의 값이 저장되어 있으므로 num의 값이 1씩 증가하는 코드를 확인할 수 있게 된다. sid값의 일부가 파일 이름과 일치하는 것을 확인할 수 있다.

'NodeJS > 생활코딩' 카테고리의 다른 글

[express] session 추가사항  (0) 2020.09.28
[express] session & auth 인증 구현  (0) 2020.09.27
[express] session 객체  (0) 2020.09.27
[express] session 옵션  (0) 2020.09.27
[express] session  (0) 2020.09.27
Comments