[Node.JS] Express 에서 cookie 사용

2017. 9. 21. 01:05개발/Node.js

반응형

쿠키란?


쿠키(cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다. 이 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다. 이 수단은 넷스케이프의 프로그램 개발자였던 루 몬툴리(Lou Montulli)가 고안한 뒤로 오늘날 많은 서버 및 웹사이트들이 브라우저의 신속성을 위해 즐겨 쓰고 있다.

쿠키는 소프트웨어가 아니다. 쿠키는 컴퓨터내에서 프로그램처럼 실행될 수 없으며 바이러스를 옮길 수도, 악성코드를 설치할 수도 없다. 하지만 스파이웨어를 통해 유저의 브라우징 행동을 추적하는데에 사용될 수 있고, 누군가의 쿠키를 훔쳐서 해당 사용자의 웹 계정 접근권한을 획득할 수도 있다.


요약하면 서버와 클라이언트간 통신함에 있어 서비스 지속성을 위한 목적으로 클라이언트측에 저장하는 정보다.


출처 : https://ko.wikipedia.org/wiki/HTTP_%EC%BF%A0%ED%82%A4




Express 에서의 적용


1. Express의 기본 모듈로 설정되어 있는 cookie-parser를 로딩한다.


1
var cookieParser = require('cookie-parser');
cs


만약 cookie-parser 가 설치되어있지 않다면 npm을 통해 설치하면 된다.







2. Express App에서 cookie-parser사용을 등록한다.


1
app.use(cookieParser());
cs





이렇게 두가지만 해주면 App안의 request, response부분에서 사용할 수 있다.








쿠키 생성


1
2
3
4
app.get('/login'function(req,res) {
    res.cookie(key,value,{options});
    res.redirect('/');
});
cs



이 형태로 작성하면 된다.


key와 value부분에는 원하는 값을 작성하면 되고, options값은 아래 내용에 맞추어 적용해주면 된다.


- maxAge : 현재 시간으로부터 만료 시간을 밀리초 단위로 설정

- expires : cookie의 만료날짜를 GMT시간으로 설정

- path : cookie의 경로, default는 "/"

- domain : cookie의 domain name, default는 loaded

- secure : https에서만 cookie를 사용할 수 있게 설정

- httpOnly : 웹 서버를 통해서만 cookie에 접근할 수 있도록 설정

- signed : cookie가 서명되어야 할 지를 결정



쿠키를 확인하는 방법은 chrome 개발자도구에서 확인할 수 있다.












쿠키 읽기


1
2
3
app.get('/state'function(req,res) {
    res.send('cookie : ' + req.cookies.key);
});
cs



req.cookies 객체를 통해 가지고 올 수 있다.







쿠키 업데이트


1
2
3
app.get('/state'function(req,res) {
    res.cookie(key, newVal);
});
cs







쿠키 삭제


1
2
3
app.get('/logout'function(req,res) {
    res.clearCookie(key);
});
cs


다만, cookie path를 설정하였을 경우 아래와같이 써주면 된다.

1
2
3
app.get('/logout'function(req,res) {
    res.clearCookie(key, {path:'/path'});
});
cs











반응형