익스프레스에서 express-session 모듈을 붙여 사용해보는것까지 해봅시다.
먼저 사용할 프로젝트에서 npm i express-session과 npm i express를 입력해 필요한 모듈을 다운받아줍시다.
그리고 다음과 같은 기본 코드를 입력해줄게요.
const express = require('express');
const app=express()
app.listen(3000)
정말 간단하게 익스프레스 앱만 있는 코드인데요 여기서 세션모듈을 쓰려면
const session = require('express-session');
app.use(session({
secret:'anysecretkey',
resave:false,
saveUninitialized:false,
}))
이렇게 require로 불러와준뒤에 app.use 함수에 session({옵션}) 형태로 넣어주시면
req.session이 추가가 됩니다.
옵션객체엔 여러 옵션들을 넣어줄수가있는데 전 몇가지만 설명해보겠습니다.
secret - 이 옵션은 어떤 키로 쿠키를 암호화할지 정해주는 옵션입니다. 필수옵션이니 꼭 넣어줍시다.
resave - 세션값의 변동이 있든 없든 항상 세션을 다시 저장해줄지 정하는 옵션입니다. 공식 문서에서는 false를 추천하고 필요하면 true로 바꾸라고합니다. 기본값 true입니다.
saveUninitialized - 세션에 저장할 내용이 있든 없든 일단 저장할지 정하는 옵션입니다. false로 두면 서버 용량을 줄일수가있겠죠? 기본값 true입니다.
그리고 제 코드에는 없지만 store 옵션이 있는데요
store - 세션을 서버에 저장할때 사용하게될 저장소를 정해줍니다. 기본값은 MemoryStore로 메모리 스토어는 서버를 재시작하거나 종료하면 저장된 세션이 없어집니다.
mysql부터 시작해 여러가지 스토어들을 사용할수 있는데요 어떤 스토어들이 있는지 살펴봅시다.
express-session
Simple session middleware for Express
www.npmjs.com
예를들어 mysql 스토어를 사용하려고하면 다음과 같이 쓰면됩니다.
npm i express-mysql-session으로 모듈을 다운받은뒤
var express = require('express');
var app = module.exports = express();
var session = require('express-session');
var MySQLStore = require('express-mysql-session')(session);
var options = {
host: 'localhost',
port: 3306,
user: 'session_test',
password: 'password',
database: 'session_test'
};
var sessionStore = new MySQLStore(options);
app.use(session({
key: 'session_cookie_name',
secret: 'session_cookie_secret',
store: sessionStore,
resave: false,
saveUninitialized: false
}));
지금 제가 하려는건 간단한 예제라서 사용하지 않으니 세션스토어는 넘어가겠습니다.
제가 썼던 옵션들을 설명했으니 이제 최종 코드를 입력해보겠습니다.
const express = require('express');
const session = require('express-session');
const app = express()
app.use(session({
secret: 'anysecretkey',
resave: false,
saveUninitialized: false,
}))
app.get('/', function (req, res) {
if (req.session.count!=undefined) {
// 한번 방문하고 난뒤엔 세션에 coumt정보가 저장되서 아래 코드를 실행하게 됩니다.
// 세션의 카운트에 1을 더합니다
req.session.count++
// 세션의 카운트정보를 요청의 결과로 보냅니다.
res.send('현재 방문 횟수는 '+req.session.count)
} else {
// 최초 방문시에는 세션에 coumt정보가 없어 아래 코드를 실행하게 됩니다.
req.session.count = 0
res.send('최초 방문을 환영합니다!')
}
})
app.listen(3000)
우리는 이제 노드로 서버에 값을 저장해두는 세션을 사용할수 있게되었습니다. 수고하셨습니다!
이해안가는부분이 있었다면 댓글로 남겨주세요
'JavaScript > Npm Modules' 카테고리의 다른 글
NodeJS mobile-detect로 모바일 정보 가져오기 (0) | 2020.03.23 |
---|---|
NodeJS node-cron 스케줄러 상세 설명 (0) | 2020.03.21 |