Cookie 암호화
쿠키값을 암호화해보자
app.use(cookieParser('키값));에 키값을 넣으면 이 키를 이용해서 암호화한다.
req.cookies.count를 req.signedCookies.count로 변경
res.cookie('count', count, {signed:true});로 변경
다음과 같이 count와 cart가 암호화가 된다.
app_cookie_security.js
var express = require('express');
var cookieParser = require('cookie-parser');//쿠키 파서 사용
var app = express();
app.use(cookieParser('123afasdfabaf%$#!'));//expressjs API보면 나옴
//상품들 리스트 원래는 데이터베이스여야함
var products = {
1:{title:'The history of web 1'},
2:{title:'The next web'}
};
//상품들 페이지
app.get('/products', function(req, res){
var output = ``;
for(var name in products){//products는 순회하고 싶은 객체
output += `
<li>
<a href="/cart/${name}">${products[name].title}</a>
</li>`;
//console.log(products[name].title);
}
//send로 html태그를 보냄
res.send(`<h1>Products</h1><ul>${output}</ul><a href="/cart">Cart</a>`);
});
/*
카트에 넣을 데이터 형식 선언해봄 제품id:구매한수
cart = {
1:2,
2:1
}
*/
app.get('/cart/:id', function(req, res){
var id = req.params.id;
if(req.signedCookies.cart){//이미 쿠키값이 있다면
var cart = req.signedCookies.cart;
}else{//최초 실행시
var cart = {};
}
if(!cart[id]){//값이 없으면 초기화해줌
cart[id] = 0;
}
cart[id] = parseInt(cart[id]) + 1;//물건의 수량을 증가시킴 쿠키는 기본적으로 문자이므로 parseInt해야됨
res.cookie('cart', cart, {signed:true});
res.redirect('/cart');//이동시 cart페이지로 이동
//res.send(cart);
});
app.get('/cart', function(req, res){
var cart = req.signedCookies.cart;
if(!cart){
res.send('Empty cart');
}else{
var output = '';
for(var id in cart){
output += `<li>${products[id].title} (${cart[id]})</li>`;//상품들의 제목들과 수량을 출력해주는 부분
}
}
//편하게 하기 위해 출력해주는 부분
res.send(`
<h1>Cart</h1>
<ul>${output}</ul>
<a href="/products">Products List</a>
`);
});
//signedCookies로 추가됨
app.get('/count', function(req, res){
if(req.signedCookies.count)//쿠키값이 있다면
var count = parseInt(req.signedCookies.count);//숫자로 강제로 바꿈
else{//쿠키값이 없다면
var count = 0;
}
count = count + 1;//카운트 값을 올리고
res.cookie('count', count, {signed:true});//여기 암호화 추가
res.send('count : '+ req.signedCookies.count);//cookies객체에 count라는 쿠키값을 가져옴
});
app.listen(3003, function(){
console.log('Connected 3003 port!!!');
});
실행 화면
여기서 상품을 클릭하면
상품명 및 (수량)을 출력해준다.
Products List를 누르면 다시 돌아간다.
출처 : https://opentutorials.org/course/2136
'프로그래밍 > Node.js' 카테고리의 다른 글
Node.js 생활코딩 정리 – 다중 사용자 시스템 만들기 (0) | 2016.12.03 |
---|---|
Node.js 생활코딩 정리 – 세션(session)을 데이터베이스(mysql)에 저장하기 (0) | 2016.12.03 |
Node.js 생활코딩 정리 – 세션(session)을 파일에 저장하기 (0) | 2016.12.03 |
Node.js 생활코딩 정리 – 세션으로 로그인 애플리케이션 만들기 (0) | 2016.12.01 |
Node.js 생활코딩 정리 – Cookie를 이용한 장바구니 만들기 (0) | 2016.11.28 |
Node.js 생활코딩 정리 – HTTP 및 Cookie 구현하기 (0) | 2016.11.28 |
Node.js 생활코딩 정리 – 세번째 웹애플리케이션 글 삭제 기능 구현 (0) | 2016.11.27 |
Node.js 생활코딩 정리 – 두번째 웹애플리케이션 글 편집 기능 구현 (0) | 2016.11.27 |