반응형
session
- 쿠키를 좀 더 개선하여 더 안전하도록 만든 것이 세션이다.
- 쿠키의 기능에 서버 데이터 공간을 합친 개념이라고 생각하면 된다.
- 사용자의 식별값만을 브라우저에 쿠키로 저장하고, 실제 데이터는 서버에 저장한다.
- 세션을 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를 메모리에서 하드로 변경한다.
- 해당 옵션을 사용하면 프로젝트 구조에 'sessions'라는 폴더가 생성되면서 이 안에 session들이 저장되고 관리되게 된다.
- session-file-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 |