리셋 되지 말자

[express] session 객체 본문

NodeJS/생활코딩

[express] session 객체

kyeongjun-dev 2020. 9. 27. 18:53

session 객체

var express = require('express')
var parseurl = require('parseurl')
var session = require('express-session')

var app = express()

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

app.get('/', function (req, res, next) {
  console.log(req.session);
  res.send('hello session');
})

app.listen(3000, function(){
    console.log('nodejs server is listening on port 3000....');
})

위처럼 루트 페이지에 접속하면, 아래와 같이 콘솔에 Session 객체가 출력된다.

nodejs server is listening on port 3000....
Session {
  cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }
}

session 미들웨어가 내부적으로 request 객체의 property로 session이라는 객체를 추가해준다는 것을 알 수 있다.

 

session 객체의 값 이용하기

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

var app = express()

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

app.get('/', function (req, res, next) {
  console.log(req.session);
  if(req.session.num === undefined){
    req.session.num=1;
  }
  else{
    req.session.num += 1;
  }
  res.send(`Views : ${req.session.num}`);
})

app.listen(3000, function(){
    console.log('nodejs server is listening on port 3000....');
})

코드를 위와같이 수정한다.

루트 페이지로 접속했을 때, session의 'num'이 없으면, num을 추가하고 1을 할당한다. 'num'이 있으면, num의 값을 1씩 더하면서 화면에 출력하는 내용이다. 처음 접속하면 아래와 같다.

새로고침을 하면, 숫자가 증가한다.

 

콘솔에 출력되는 session 객체를 출력하면, 아래와 같이 num이 추가가 되고 1씩 증가하는 것을 확인할 수 있다.

nodejs server is listening on port 3000....
Session {
  cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }
}
Session {
  cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
  num: 1
}
Session {
  cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
  num: 2
}

 

 

session 미들웨어는 내부적으로 세션 저장소라는 곳에 num 이라고 하는 이름의 값으로 1을 저장하고, 그 다음에 요청할 때 다시 1이라는 값을 제공한다. 다시 요청하면 1이 더해진 값을 제공한다.

이 값은, Memory에 저장되어 있다.

nodejs 웹서버를 종료하고 다시 리로드를 하면 1부터 다시 시작한다. 즉 session의 정보가 다 날라간다.

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

[express] session & auth 인증 구현  (0) 2020.09.27
[express] session store  (0) 2020.09.27
[express] session 옵션  (0) 2020.09.27
[express] session  (0) 2020.09.27
[NodeJS] 쿠키를 이용한 기능 구현  (0) 2020.09.25
Comments