작성
·
219
0
안녕하세요^^
쿠키 와 세션에 관해서 질문이 있습니다.
1. 로그인 구현할때 express-session을 통해서 연습을 하고 있는데 서버가 세션을 보내고 브라우저는 쿠키를 받는다.
여기서 쿠키가 암호화가 되는이유가 express-session의
옵션값으로 secret값을 가지고 해싱을 한 후 브라우저에게 주기 때문에 쿠키값이 해싱이된다. 라고 이해를 하고 있습니다.
맞나연?
그리고 요청이 올때는 쿠키값을 해독한 다음
req.session에 들어오는 건가요??
2. 그리고 로그인 요청이 올때 세션에 있는 유저 정보와 데이터베이스에 있는 유저랑 매칭 후 있으면 로그인을 시킨다.
여기서도 express-session으로 구현을 해보았는데
// 요청 온 아이디와 일치하는게 데이터베이스에 있다면
req.session.userId = 변수.id;
이부분에서 여러사용자가 로그인 요청이 올수도 있기때문에 req.session에userId 값들을 배열로 담는것이 맞나요?
ex) req.session.userId = [];
req.session.userId.push(변수.id);
제가 잘못생각한게 있으면 고쳐주시면 감사하겠뜹니다.
답변 5
0
0
1. 로그인할 때 응답에 쿠키를 심어보내줍니다. 브라우저는 그 쿠키를 저장해두고 요청을 보낼 때 계속 재사용하고요. passport가 내부적으로 express-session을 사용해 보냅니다.
2. 네 맞습니다.
0
1. 그러면 알아서 응답을 보낼때 헤더에다가 쿠키를 심어보내는거군요.
=> 이 역활은 express-session이 하는건가요??
2. 아 그럼 브라우저에서 오는 쿠키값을 해독한뒤 store에서 req.session에 값을 가지고 온다라고 생각하면 될까요?
0
1. 서버가 세션을 보낸다 빼고는 다 맞습니다. 서버는 세션을 저장해둘뿐 어디에 보내지는 않습니다.
2. req.session은 사용자마다 다르게 부여됩니다. 즉 req.session은 그 요청에 대해서만 유효하므로 userId가 여러 개가 될 일은 없습니다. req.session.id는 현재 요청을 보낸 사용자의 id 하나가 됩니다.