Fall in IT.

Node.js에서 세션 사용하는 방법 본문

프로그래밍언어/Node.js

Node.js에서 세션 사용하는 방법

D.Y 2016. 4. 27. 11:41

안녕하세요. 오늘은 Node.js에서 세션을 사용하는 방법에 대해 알아보겠습니다.


세션은 쿠키를 기본으로 하여 기능을 확장한 것 입니다.

만약, 쿠키에 사용자에 대한 정보가 모두 저장되어 있다면 보안상 굉장히 위험합니다.

따라서, 접속한 사용자를 식별할 수 있는 값(id와 같은 값)만을 클라이언트에 쿠키로 저장하고 서버에는 해당 식별자에 해당하는 사용자 정보를 데이터베이스 또는 파일, 메모리에 저장하여 사용하는 것이 세션입니다.


따라서, 세션 방식과 쿠키방식의 차이점은 쿠키는 헤더정보에 Set-Cookie의 실제값을 포함시켜 요청하고,

세션에서는 set-cookie에 connect.sid 라는 식별자만(고유값)을 포함시켜 요청한다는 것이다. (클라이언트에서 관리하는 정보가 다름)


클라이언트의 컴퓨터에는 중요한 정보는 저장되어 있지 않고, connect.sid라는 식별자 값만 저장되어 있으므로, 보안적으로 안전합니다.




목적

  • 세션을 사용하여 클라이언트와 서버간의 데이터를 주고 받는것을 확인한다.


요구사항

  • 세션(쿠키)가 최초에 없을 때는 서버에서 count값으로 1을 보내고, 세션(쿠키=connect.sid)가 있을 시 count값을 1을 증가시켜 반환한다.
    (따라서, 클라이언트에서 쿠키를 삭제하기 전까지는 1씩 증가된 값을 가지고 있게 된다.)


구축환경

  • 웹프레임워크로는 express를 사용하고, express는 세션 기능을 가지고 있지 않으므로, 미들웨어(express-session)를 사용한다.


구축방법

  • 패키지에 기본적으로 express와 express-session을 설치한다.
    - $ npm install express --save
    - $ npm install express-session --save
  • 사용방법은 아래 사이트를 참조한다.
    https://www.npmjs.com/package/express
    - https://www.npmjs.com/package/express-session
  • express를 사용하여 웹서버를 띄웁니다. (예제에서는 3000번 포트를 사용합니다.)
    - app.listen(3000);
  • 세션을 주고받을 라우터를 추가합니다.
  • request에 세션정보가 없을 경우에는 1을 response하고, 있을 경우 1을 더해서 response한다.
  • 크롬 개발자 도구를 사용하여 확인합니다.

소스코드

var express = require('express');

var session = require('express-session'); // 세션정보는 메모리에 저장함

var app = express();


app.use(session({

  secret: '1@%24^%$3^*&98&^%$', // 쿠키에 저장할 connect.sid값을 암호화할 키값 입력

  resave: false,                                   //세션 아이디를 접속할때마다 새롭게 발급하지 않음

  saveUninitialized: true                   //세션 아이디를 실제 사용하기전에는 발급하지 않음

}));


app.listen(3000, function(){

  console.log('Connected 3000 port');

});


app.get('/session', function(req, res){


  if(req.session.count)

  {

    //request에 세션 내용이 있을 경우

    req.session.count++;

  }

  else

  {

    //request에 세션 내용이 없을 경우

    req.session.count = 1;

  }

  res.send('count: '+req.session.count);

});



실행화면



<Request Headers에 값이 있고, 서버에서 응답 받은 count값을 화면에 뿌림>


<count 값이 1증가 되는것을 확인>


<쿠키 삭제후 재실행 시, Request에 쿠키값이 없음을 확인할 수 있고, count 값으로 1 반환>






모두 즐거운 코딩하세요~





Comments