Cookies

less than 1 minute read

Cookie

Cookie를 사용하는 이유

웹에서 서버에 통신을 할때 http 통신을 활용한다. 웹에서 서버에게 http 통신을 통해 request를 보내고
서버는 웹에게 받은 request를 수행하고 response를 다시 http통신을 통해 웹에게 전달한다. 즉 웹이 서버에 request를 보내고 서버가 웹에게 response를 돌려주는 순간 http 통신은 끊기게 된다.
여기서 일어나는 단점은 만약 우리가 웹에서 로그인을 한 상태의 유저라면 다른 페이지로 가거나 어떤 행동을 하게되면 연결이 계속 연결되었다 끊기는 경우를 반복할 것이다. 결국 우리는 어떤 행동을 하려할때 마다 로그인을 계속 해서 이요청이 누가 한것인가?를 인증해야 한다. 이런 단점을 보완하는 것이 Cookie 이다.

Cookie를 어떤 용도로 사용하려는가?

cookie는 http 통신을 하면서 header를 통해 전달이 된다. cookie는 암호화되지 않는다. 떨어지는 보안성때문에 blackhacker가 cookie를 탈취하여 계정정보를 가져갈 수 있다. 하지만 프로젝트에서의 인증을 위하여 user의 displayname과 email을 cookie에 저장하고 사용할 것이다.
추후에 이 cookie의 단점을 보완한 session cookie로 update할 것이다.

firebase.auth().onAuthStateChanged(function (user) {
      if (user) {
        user.getIdToken().then(function (idToken) {
          setCookie("userName", user.displayName);
          setCookie("userEmail", user.email);
          setCookie("userUid", user.uid);
        }
      }
}

firebase.auth().onAuthStateChanged은 firebase 인증의 리스너이다. 로그인이 되었는지 안되었는지를 확인하고, 만약 로그인이 되었을 때 쿠키에 현재 로그인한 유저의 displayName,email,uid를 cookie에 저장한다.
이 데이터는 서버(node.js)에서 request.cookies.*** 으로 불러와서 서버에서 데이터를 사용할 것이다.

Updated: