[Nodejs]생활코딩 Nodejs- 쿠키와 인증 1
쿠키의 생성
쿠키(Cookie)
웹서버의 정보를 웹브라우저에 저장해서 개인화, 인증, 사용자 추적 등의 기능을 구현할 수 있게 해준다.
웹브라우저는 reload할 때 마다 set-cookie에 의해 저장된 cookie값을 Cookie라는 헤더값으로 서버에 전송함.
(크롬의경우 개발자도구)Application 탭에서 clear 버튼으로 쿠키값을 지울 수 있음.
Node.js를 이용해서 쿠키를 생성하는 방법
var http = require('http');
http.createServer(function(request,response){
response.writeHead(200,{
'Set-Cookie' : ['yummy_cookie=choco','tasty_cookie=strawberry']
});
response.end('Cookie!!');
}).listen(3000);
두번째 인자에 객체의 형태로 값을 줘서 쿠키를 생성한다.
쿠키 읽기
웹브라우저가 전송한 쿠키를 웹서버 측에서 읽는 방법
npm을 통한 cookie 모듈 설치
npm install -s cookie
사용법
var cookie = require('cookie');
var cookies = cookie.parse(request.headers.cookie);
// 쿠키값이 없으면 undefined가뜨고 parse()는 undefiend를 수용하지 못함 => if문으로 undefined가 뜨는 경우를 걸러줘야한다.
.parse()는 문자열을 객체로 반환해준다. 그렇기때문에 cookies에 담긴 값은 cookies.yummy_cookie 으로 접근이 가능하다.
쿠키의 활용
쿠키는 웹사이트 접속시 접속자의 개인장치에 다운로드 되고 브라우저에 저장되는 작은 텍스트 파일이다. 웹사이트는 쿠키를 통해 접속자의 장치를 인식하고, 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장한다.
javascript로 reload없이 cookie값을 바꿀 수 있다.
로그인을 하면 sessionid
라는 쿠키가 생긴다.
그 value로 로그인이 가능하다.
개발자 도구 > 저장소 > 쿠키
sessionid를 추가해서 value에 그 값을 넣고 reload하면 로그인됨.
sessionid를 훔치는 보안공격들이 많음. => 따라서 쿠키는 중요하다.
Session 쿠키 VS Permanent 쿠키
Session 쿠키
는 웹브라우저가 켜져 있는 동안만 유지되고 껐다 다시 켜면 사라지는 반면에,
Permanent
쿠키는 껐다 다시 켜도 유지된다. 지정해 둔 만료 값 만큼 유지가 된다.
//Session 쿠키
http.createServer(function(request,response){
response.writeHead(200,{
'Set-Cookie' : ['yummy_cookie=choco','tasty_cookie=strawberry']
});
response.end('Cookie!!');
}).listen(3000);
//Permanent 쿠키
response.writeHead(200,{
'Set-Cookie' : ['yummy_cookie=choco',
'tasty_cookie=strawberry',
`Permanent=cookies; Max-Age=${60*60*24*30}`
]
});
세 번째 인자로 Permanent=cookies; Max-Age=${60*60*24*30}
를 추가하면
Permanent 쿠키가 된다. 혹은 Max-Age
대신 Expires
를 줘도 된다.
Max-Age의 우항에는 현재시각을 기준으로 얼마나 더 유지할 것 인지 그 시간을 값으로 준다.
Leave a comment