인프런 커뮤니티 질문&답변

jfk6725님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

로그인 처리하기 - 서블릿 HTTP 세션1

로그인 처리하기 - 세션 직접 만들기 관련 질문입니다.

작성

·

151

0

SessionManager를 보면 SESSION_COOKIE_NAME과 로그인 할 때마다 새로 생성한 sessionId로 쿠키를 만드는 것 같습니다.

이 프로그램을 사용하는 여러 멤버들이 동시에 로그인을 한다면, sessionId는 다르지만 SESSION_COOKIE_NAME이 동일한 쿠키가 중복되서 생기지 않나요?

findCookie에서는 SESSION_COOKIE_NAME만 가지고 로그인한 멤버가 사용하는 sessionId를 제대로 찾을 수 있는건가요?

답변 1

1

안녕하세요. jfk6725님, 공식 서포터즈 y2gcoder입니다.

사용자들 각각 브라우저 환경을 사용한다는 점을 간과하신 것으로 보입니다!

Cookie에는

key == SESSION_COOKIE_NAME == 'mySessionId'

value == sessionId == UUID 문자열(랜덤 값)

이렇게 저장됩니다.

그리고 세션에는 해당 Cookie의 value(sessionId)를 key 값으로 하고 저장하고자 하는 값을 value에 저장하게 됩니다.

 

그 후 그걸 응답에 실어 보내면 각 사용자는 쿠키를 각각 저장하고 있습니다. 그래서 사용자는 자신의 고유한 sessionId를 가진 쿠키만 들고 있게 됩니다.

그 후 사용자가 다시 요청을 보낼 때는 자기 브라우저에 있는 쿠키를 요청에 실어 보냅니다!

그러면 서버는 getSession()에서 findCookie를 통해 cookie를 찾았을 때 cookie의 value로 사용자의 고유한 sessionId를 얻을 수 있고 그를 통해 세션에 저장된 데이터를 조회할 수 있게 됩니다.

 

로그인 처리하기 - 세션 직접 만들기 강의를 복습하시면서 SessionManager 의 코드를 다시 한번 천천히 살펴보시길 바랍니다

image

 

 

 

감사합니다.

jfk6725님의 프로필 이미지

작성한 질문수

질문하기