로그인 구현방식 1. 세션 기반 인증방식
1. 개념잡기
분명 HTTP 통신은 stateless 하다고 배웠는데, 어떻게 네이버에 로그인을 한 뒤, 새로고침을 해도 로그인 상태가 유지되는 것일까?
세션 기반 인증 방식에서는 최초 1회 로그인 한 뒤부터는 서버에서 응답받은 세션 쿠키값이 자동으로 클라이언트의 헤더값에 설정되어 전달되기 때문에, 서버에서 요청을 한 주체를 알 수 있게 된다.
1-1. 기억하기
세션 : 클라이언트와 서버의 연결이 활성화된 상태
세션 ID : WAS 혹은 DB 에 저장된 클라이언트의 유니크한 ID
2. 과정 살펴보기
클라이언트는 사용자의 로그인 정보를 POST 메소드를 통해서 HTTP 으로 서버에 전달한다.
이를 확인한 서버는 로그인 정보와 일치하는 사용자를 찾았다면, 응답 헤더에 Set-Cookie 헤더값을 통해서 세션 ID 를 전달한다.
서버로부터 세션 ID 를 받은 클라이언트는 이후의 통신부터는 자동으로 헤더 쿠키값에 session ID 가 넣어진채로 통신하게 되므로, 로그인 세션이 유지되게 된다.
3. 단점
WAS 에 저장할 경우, 웹 서버 메모리에 저장하게 되면, 사용자가 급격하게 늘어날 경우, 서버에 과부하를 주게 된다.
DB 에 저장할 경우, 데이터베이스로부터 가져와 서버에서 Json 혹은 문자열로 만드는 과정을 통해 직렬화 및 역직렬화의 비용이 발생하게 된다. - 오버헤드!
Last updated