티스토리 뷰
session
express에서 세션 사용하기
$ npm install express-session --save
세션을 초기화 할 때 옵션
- name : 세션 ID의 키 이름(쿠키). 기본값은 connect.sid
- resave : 변경 사항이 없어도 저장. 옵션 작성 필요
- saveUninitialized : 세션 초기화 전에도 저장. 옵션 작성 필요
- secret : 세션 ID 서명
- store : 세션 저장소
- cookie : 쿠키 옵션(domain, path, expires, maxAge). 쿠키 파서 없이 사용 가능 19
세션 예제
- 예제는 express도 설치해야 한다.
$ npm install express express-session --save
const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({
secret: 'Secret Key',
resave: false,
saveUninitialized: false
// ,cookie:{maxAge:3000} // 쿠키의 maxAge를 이용해서 세션 유효기간 설정. 3초
}));
// 파비콘 무시
app.use('/favicon.ico', () => {});
app.use(function (req, res) {
// 세션 ID
const sessionID = req.sessionID;
console.log('session id :', sessionID);
// 방문 횟수
console.log('sessionVisit : ', req.session.sessionVisit);
if (req.session.sessionVisit)
req.session.sessionVisit = parseInt(req.session.sessionVisit) + 1;
else
req.session.sessionVisit = 1;
// 마지막 방문 날짜
var now = new Date();
var last = now.getFullYear() + '.' + (now.getMonth() + 1) + '.' + now.getDate();
req.session.sessionLast = last;
// 첫 방문 날짜
if (!req.session.sessionSince) {
req.session.sessionSince = last;
}
// 쿠키 접근하기
const cookies = req.session.cookie;
console.log('cookies : ', cookies);
res.send({
sessionVisit: req.session.sessionVisit,
sessionSince: req.session.sessionSince,
sessionLast: req.session.sessionLast
});
});
app.listen(3000);
서버가 재 시작해도 session을 잃어버리지 않기
connect mongo
$ npm install connect-mongo --save
세션 저장 예제
const express = require('express');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const app = express();
const sessionStoreOptions = {
url: 'mongodb://localhost:27017/session'
,ttl : 3 // 세션 유효기간 초 단위. 3초
// ,autoRemove : 'interval' // 주기적으로 제거
// ,autoRemoveInterval: 1 // 분 단위
};
app.use(session({
secret: 'Secret Key',
resave: false,
saveUninitialized: false,
store: new MongoStore(sessionStoreOptions)
}));
// 파비콘 무시
app.use('/favicon.ico', () => {
});
app.use( (req, res) => {
console.log('req.session', req.session);
// 세션 ID
const sessionID = req.sessionID;
console.log('session id :', sessionID);
// 방문 횟수
console.log('sessionVisit : ', req.session.sessionVisit);
if (req.session.sessionVisit)
req.session.sessionVisit = parseInt(req.session.sessionVisit) + 1;
else // 방문한 적이 없으면 1로 초기화
req.session.sessionVisit = 1;
// 마지막 방문 날짜
const now = new Date();
const last = now.getFullYear() + '.' + (now.getMonth() + 1) + '.' + now.getDate();
req.session.sessionLast = last;
// 첫 방문 날짜
if (!req.session.sessionSince) {
req.session.sessionSince = last;
}
res.send({
sessionVisit: req.session.sessionVisit,
sessionSince: req.session.sessionSince,
sessionLast: req.session.sessionLast
});
});
app.listen(3000);
'Develop > Node.js' 카테고리의 다른 글
[node.js] 'socket.io' module (0) | 2018.06.17 |
---|---|
[node.js] transmission (0) | 2018.05.13 |
[node.js] Callback 지옥에서 벗어나보기 (0) | 2018.03.26 |
[node.js] 'url' module (0) | 2018.03.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크