import session from "express-session";
app.use(
session({
secret:"Hello!",
resave: true,
saveUninitalized: true,
}));
-> 브라우저가 우리의 backend와 상호작용 할 때마다, 이 세션이 브라우저에 cookie를 전달함.
-> 쿠키는 백엔드가 브라우저에 주는 정보. 쿠키에는 정해진 규칙이 있음. 브라우저가 백엔드에 req할 때마다, 브라우저는 알아서 그 req에 cookie를 붙여서 보냄. Session에서는 이 정보를 받아 서버에 저장하지만(SessionStore) 쿠키는 그 쿠키 안에 정보를 저장해서, 도난 당하면 정보까지 도난 당하는 것임.
-> 쿠키에는 어떤 정보든 넣을 수 있음. 우리가 이 part에서 쿠키에 넣을 건 session id임. 이 id를 서버에 제출하면 서버에 저장된 그 id에 맞는 정보를 제공할 것임. res를 하면 사용자와 백엔드 간의 연결이 끊기기 때문에, Session ID를 매번 주는 것임.
-> 총 두가지를 주고 받는데, 하나는 쿠키(여기에 정보를 넣어서 주고받음). 또 하나는 Session ID, 이건 누가 사용자인지 판가름 하기 위한 거임.
Cookie와 Session의 차이
Cookie와 Session의 차이2
cookie: 단지 정보를 주고 받는 방법. 별도의 어떤 행동을 취하지 않아도 http가 알아서 자동으로 할 것임.
Session ID: cookie에 저장돼 전송됨. 어쨌든, Session ID가 쿠키에 저장되어 전달되고, backend에도 저장됨.
backend는 사용되고 있는 모든 Session ID를 유지하고 관리하는 곳임. 즉, backend는 SessionStore를 가지고 있음. 이 SessionStore는 서버가 재시작되면 초기화 되므로, 이를 해결하기 위해서는 mongoDB와 연결해서 사용해야됨.
여기에는 몇가지 문제가 있다. -> 다음 영상에서 다룰 것임.
-> 쿠키: 쿠키에 정보저장, 세션: 서버에 정보저장, 쿠키로는 id만 전달하고 정보는 id를 서버에 인증하면 정보를 쓸 수 있음.
1. 클라이언트가 서버에 로그인 요청을 합니다
2. 서버는 클라이언트의 로그인 요청의 유효성을 확인하고(아이디와 비밀번호 검사) 응답헤더에 set-cookie: user=chrisjune 를 추가하여 응답합니다.
3. 클라이언트는 이후 서버에 요청할 때 전달받은 cookie: user=chrisjune쿠키를 자동으로 요청헤더에 추가하여 요청합니다. 헤더에 쿠키값을 자동으로 추가하여 주는데 이는 브라우저에서 처리해주는 작업입니다.
-> 즉, 세션에서는 접속했을 때 req가 쿠키에 id를 넣어서 백엔드(서버)에 보내고 백엔드에서는 id를 대조한 뒤에, 서버에 저장된 정보를 쿠키에 넣어서 주고 받는다. (세션에서는 쿠키에 session id만 저장함). 그리고 서버에 정보를 저장하기 때문에, 서버를 restart하면 정보가 초기화 되기 때문에, memoryStore이고 실제 사용하기 위한 장소는 아님. 그래서 우리는 data를 DB에다가 저장해야댐.
-> 쿠키는 그 local 쿠키 자체에 정보를 가지고 있기 때문에, 우리가 방심할 때 도난 당하면 정보를 잃는 것임.