일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 빅 데이터
- Deep learning
- Big Data
- 김양재 목사
- Machine Learning
- R
- 인공지능
- 빅데이타
- 데이터 과학
- 확률
- 딥러닝
- c++
- 김양재
- 몽고디비
- WebGL
- 통계
- node.js
- 빅데이터
- Statistics
- 김양재 목사님
- 빅 데이타
- probability
- 주일설교
- No SQL
- MongoDB
- 우리들교회
- openCV
- nodeJS
- Artificial Intelligence
- data science
- Today
- Total
Scientific Computing & Data Science
[Programming / WebApp] Express-Session 본문
HTTP는 현재의 상태를 알 수 없는 구조로 되어 있기 때문에 사용자 데이터를 저장하는 방법이 필요하다.
이를 해결하기 위한 방법이 Cookies를 저장하거나, HTTP를 통해 사용자 데이터를 전송하는 방법이 있는데 이 두 가지 방법 모두 Client 측에서 읽기가 가능하므로, 보안에 취약할 수 있다.
이에 반해, Session은 이를 암호화하여 사용자 데이터에 대한 보안을 강화하는 방법이다.
작동 방식은, 사용자에게 ID를 부여하고 이 ID를 통해 모든 request를 생성하는 방식으로, ID와 연동된 사용자 데이터가 Client가 아닌 Server에 저장되는 방식이다.
Server가 재시작 되지 않는 한, 동일한 ID로 데이터가 연동될 것이다.
Express-Session 설치
Node.js의 express-session 역시 Node Package Manager(NPM)를 통해 설치가 가능하다.
> npm install --save express-session
활용
Session이 가장 널리 사용되는 활용 예는 뭐니뭐니해도 로그인이라 생각된다.
즉, Server는 현재 사용자가 로그인 상태인지 아닌지를 체크하여 그 상황에 맞는 응답을 해 주는 것이다.
우선 가장 간단한 예제를 살펴보자.
사용자가 페이지 방문 카운트를 기록하는 예제이다.
app.js에 다음과 같이 코드를 작성한다.
[{EXPRESS_PROJECT_ROOT}/app.js]
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var app = express();
app.use(cookieParser());
app.use(session({secret: "secret!"}));
app.get('/', function(req, res){
if(req.session.page_view_count){
req.session.page_view_count++;
res.send("당신은 이 페이지를 " + req.session.page_view_count + "번 방문하셨습니다.");
}
req.session.page_view_count = 1;
res.send("이 페이지의 첫 방문을 환영합니다!");
});
app.listen(3000);
이제 웹 브라우저에서 'localhost:3000/' 경로로 주소를 입력하면 다음과 같은 페이지가 렌더링 될 것이다.
개발자 도구에서 Application > Cookies > http://localhost:3000를 살펴보면,
알 수 없는 Value(암호화 되었기 때문에)이 표시된 Session을 확인할 수 있다.
이제 이 페이지를 새로고침(F5)을 여러번 하면 (가령 21번) 다음과 같이 페이지가 렌더링 될 것이다.
Session은 웹 서비스의 Production 단계에서 매우 중요한 도구이므로 옵션에 대해 가능한 정확히 잘 알고 쓰는 것이 중요하다.
Session의 각종 옵션에 대한 자세한 내용은 express-session Github 페이지를 참고하도록 한다.
'Programming > Web App' 카테고리의 다른 글
[Programming / WebApp] Canvas에 웹캠 화면 출력 (1) | 2016.09.18 |
---|---|
[Programming / WebApp] 네이버 영화 웹 스크랩핑(Web Scraping) (3) | 2016.09.16 |
[Programming / WebApp] Express-Cookies (0) | 2016.09.15 |
[Programming / WebApp] Express-MongoDB 활용 (0) | 2016.09.05 |
[Programming / WebApp] Form Data 전송 (0) | 2016.09.04 |