[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/WEB

Node.js - session

inu 2021. 2. 2. 14:41
반응형

session

  • 쿠키를 좀 더 개선하여 더 안전하도록 만든 것이 세션이다.
  • 쿠키의 기능에 서버 데이터 공간을 합친 개념이라고 생각하면 된다.
  • 사용자의 식별값만을 브라우저에 쿠키로 저장하고, 실제 데이터는 서버에 저장한다.

브라우저에 저장된 식별값(sid)의 한 예시. 이는 절대 다른 브라우저와 겹치지 않는다.

  • 세션을 node.js express 상에서 간단하게 활용하기 위해선 추가적인 패키지 설치가 필요하다.

패키지 설치

$ npm install express-session
  • node.js가 session을 생성하고 관리할 수 있도록 도와주는 미들웨어이다.

사용예제

var express = require('express');
var session = require('express-session');
var app = express();

app.use(session({
  secret: '1234DSFs@adf1234!@#$asd',
  resave: false,
  saveUninitialized: true,
  secure: true
}));

app.get('/count', function(req, res){
  if(req.session.count) {
    req.session.count++;
  } else {
    req.session.count = 1;
  }
  res.send('count : '+req.session.count);
});

app.listen(3000, function(){
  console.log('Connected 3000 port!!!');
});
  • app.use(session({}))으로 웹서버가 session 미들웨어을 사용하도록 처리한다.
  • secret에는 암호화에 사용될 키를 입력한다. (secret 옵션의 내용은 암호키이므로 버전관리시 별도로 관리하여야 한다.)
  • 아래 두 옵션은 값변경에 따른 재저장여부와 세션 사용전 발급여부인데 resave: false,saveUninitialized: true가 권장옵션이니 그대로 활용하자.
  • secure는 true로 설정시 https에서만 session정보를 주고받는다.
  • 이제 모든 값의 관리는 req.session에서 수행한다. 이는 다른 session id를 가진 브라우저에서는 접근할 수 없다.
  • 다만 이는 서버 메모리 상에 저장되는 것이기 때문에 서버 재실행시 해당 값들이 모두 사라질 수 있다. 이를 해결하는 위해선 session값이 저장되는 session store를 변경해야 한다.

session store 변경

$ npm install session-file-store
  • session-file-store 패키지를 설치해 session store를 간단하게 변경할 수 있다.
var session = require('express-session');
var FileStore = require('session-file-store')(session);

app.use(session({
    store: new FileStore({}),
    secret: 'keyboard cat'
}));
  • store: new FileStore({})을 통해 session store를 메모리에서 하드로 변경한다.

반응형

'🛠 기타 > WEB' 카테고리의 다른 글

서버기반 인증시스템과 토큰기반 인증 시스템  (0) 2021.02.03
Node.js - Passport.js 기초  (0) 2021.02.03
Node.js - cookie  (0) 2021.02.02
Node.js - multer (파일 업로드)  (0) 2021.01.31
Node.js - Sequelize  (0) 2021.01.28