본문 바로가기

내일배움캠프 Node 4기/TIL

내배캠 12/20 TIL

쿠키와 세션, 그리고 JWT

- 기본적으로 http는 stateless한 특성을 가지고 있다. 한국어로 풀자면 '상태가 없다' 정도인데
좀 더 간단히 이해하자면, 요청을 받고 처리만 해주면 끝나는것이지 계속 state가 유지되지 않는다는 뜻이다.

그렇기에 별다른 처리를 해주지 않으면, 로그인 페이지를 만들어놓아도 다른 페이지로 이동하면 로그인이 풀려버린다. 로그인 결과로 인해 response를 날리면 그걸로 서버가 할 일은 다 끝났기 때문이다.

 

이 문제를 해결하기 위해 쿠키랑 세션을 사용한다.

 

쿠키는 서버에서 클라이언트로 내려주는 데이터 파일같은건데, 클라이언트 내부에서 보관한다. 쿠키의 쉬운 예는, 인터넷 브라우저를 종료하고 다시 열어도 사이트 로그인 관련 쿠기만 남아있으면, 로그인 상태가 유지되는것 그게 바로 쿠키이다. 뭐랄까... 서버와 클라이언트 간의 연결고리 역할을 한다고 보면 된다.

 

그러나 쿠키는 클라이언트 내부에서 가지고 있기때문에, 보안에 취약하다는 단점이 존재하기 때문에 이를 보완한게 세션이다. 세션은 서버에서 session id라는걸 내려보내 클라이언트에 존재하는 쿠키를 확인하는 한단계 더 절차를 거친 개념으로 접근하면 이해가 쉽다. 그러나 세션의 최대 단점은 서버에 부담이 간다는 것.

 

JWT는 서버와 클라이언트 간에 비밀친구(?)계약을 맺는다고 이해하면 쉽다.

JSON을 기반으로 일정한 비밀정보를 서로 주고받음으로서 정체를 확인하는(?) 방식이다.

 

더 자세한 내용은 이번주차 학습목표를 달성 하고 작성하려 한다.

 

 

몽고DB의 exec()는 무슨 의미?

- 몽고db에서 sort 관련한 작업을 할때 끝에 exec()를 붙이네 마네 갑론을박을 하는 포스팅을 보았는데, 

사실 안붙여도 되는거였지만,  좀 더 내막을 알아보니 몽고DB에서 비동기 프로그래밍을 할때, 리턴되는 값이 Promise로 리턴되어야 안전한데 exec를 제외하고 실행하면 그건 온전한 Promise가 아니라 일종의 프로미스 흉내(?)라고 한다. 그렇기에 비동기적 처리를 할때는 exec()로 완전한 Promise를 리턴해야 오류가 발생할 확률이 현저히 적다고 한다. 습관적으로 붙이는 것을 고려해 봐야 겠다.

 

 

'내일배움캠프 Node 4기 > TIL' 카테고리의 다른 글

내배캠 12/22 TIL  (0) 2022.12.22
내배캠 12/21 TIL  (1) 2022.12.21
내배캠 12/19 TIL  (0) 2022.12.19
내배캠 12/17 TIL  (0) 2022.12.17
내배캠 12/16 TIL  (0) 2022.12.16