Frameworks/Express.js

5. Express-session 모듈 소개

양디 2016. 1. 19. 10:37


Express-session 모듈

HTTP 는 Stateless 한 통신을 한다.


즉 현재 상태에 대한 정보를 프로토콜 내부에서 기록하지 않는다는 것이다.


따라서 로그인 정보, 고객 정보 등을 브라우저에서 가지고 유지할 방법이 없었다.


따라서 이러한 필요에 의해서 나온 것이 쿠키 / 세션 의 개념이다. (자세한 설명은 네트워크 공부를!)


세션은 정보를 서버에서 저장한다. 


Express 에서 또한 이 세션을 유지하기 위한 모듈을 제작해 두었는데, 이것이 Express-session 이다.


기존에는 Express 모듈 내부에 자체 내장된 session 기능이 있었는데, 이를 따로 자체 모듈화 하였기 때문에 직접 설치하고 세팅해주어야 한다.


보통 세션을 통해서 로그인 정보를 서버 메모리에 저장한다. 또는 인터넷을 사용할 때에 필요한 정보들을 담아두고 관리한다.

Express-session 설치


npm install express-session --save


역시 우리에게는 npm 이라는 고마운 설치 툴이 존재한다.


간단하게 다운로드 받아주면 된다.


받았다면 express 설정 파일인 ./app.js 파일에 설정 정보를 입력해주면 되겠다.


1
var session = require('express-session');
cs


먼저 모듈을 사용하기 위해 임포트 해온다.


그리고 아래 라우터를 설정하기 위한 코드 윗부분에 다음과 같이 세션 정보와 익스프레스에 적용을 시키는 코드를 입력한다.


1
2
3
4
5
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true
}));
cs


그럼 세션이 적용된다.

Express-session 설정


Session을 설정하기 위한 옵션들은 다음과 같이 있다.


  • proxy : 프록시를 믿을 것인지, https와 관련하여 필요한 옵션이다. 디폴트 값은 undefined 이다. ture나 false가 가능하다.
  • resave : 재저장을 계속 할 것인지의 옵션이다. 세션에 요청이 들어간 후에 세션에 변동이 있든 없든 무조건 저장하겠다는 옵션. 기본값은 true 이나 false로 하는것을 추천.
  • saveUninitialized : 세션이 세션 store에 저장되기 전에 uninitialized 된 상태로 만들어서 저장한다. 
  • secret : 비밀 키를 저장한다. 이 비밀 키를 통해서 Session Id를 암호화하여 관리한다.
  • cookie : 세션과 함께 쿠키를 사용할 수 있는데, 객체로써 들어간다. 들어가는 옵션에는 secure, maxAge 등이 있다.
위와 같은 설정들을 session을 만들때에 사용한다.

또한 실제로 라우터나 서버를 활용하는 부분에서 사용되는 함수들이 선언되어 있다.

Session.regenerate() : 세션을 새로 생성한다. 기존의 세션은 사라진다.

Session.destroy() : 세션을 삭제한다. 세션의 정보들 모두 다 free된다.

Session.reload() : 세션을 다시 불러온다. 저장되지 않은 정보들은 사라진다.

Session.save() : 세션에 변경된 값을 저장시킬 수 있다.

Session.touch() : 세션의 쿠키 maxAge를 위한 TTL을 초기화시켜줌. Express에서 쿠키 파서를 사용하는데, 파서에서 이 역할을 해주므로 실제로 부를 일은 자주 없음.


여기까지가 Express-session에 대한 간략한 설명이었다.

세션 정보들은 라우터 파일에서 보통 관리하는데, request 에 따라서 세션 정보를 사용하기 때문이다.

다음 포스트엔 express-session 을 통해 로그인/아웃을 만들어 보자 !





댓글