일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- go
- Intellij
- UnBuffered channel
- intellij ide
- AWS
- GoF 디자인패턴
- 배포 파이프라인
- 오블완
- 티스토리챌린지
- http 413
- 디자인패턴
- body size
- 컴포지트패턴
- Buffered channel
- 사설 ip
- apollo router
- Logrus
- Kubernetes
- 배포 프로세스
- notification system
- Infra
- System Design
- GoF
- 대규모 시스템 설계
- golang
- elasticsearch
- 윈도우키보드
- gitops
- Golines
- goland
- Today
- Total
Fall in IT.
Node.js에서 세션 사용하는 방법 본문
안녕하세요. 오늘은 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 반환>
모두 즐거운 코딩하세요~
'프로그래밍언어 > Node.js' 카테고리의 다른 글
MAC에서 npm으로 광역모듈 설치시 에러 (0) | 2016.09.28 |
---|---|
모듈 - npm으로 모듈설치하는 방법 (0) | 2016.07.17 |
Node.js에서 쿠키하는 사용방법 (0) | 2016.04.26 |
실행중인 Node.js 프로그램 자동재시작 프로그램 Supervisor (0) | 2016.04.05 |
Node.js, Express 개념정리하기 (1) | 2016.04.02 |