로그인은 세션기반인증방식 또는 토큰기반인증방식으로 구현됩니다.
HTTP의 특징 중 하나는 상태없음(stateless) 하다라는 것인데, 즉, HTTP 요청을 통해ㅜ데이터를 주고 받을 때 요청이 끝나면 요청한 사용자의 정보 등을 유지하지 않는 특징이 있습니다.
이렇기 때문에 로그인 상태를 어떻게 유지하느냐?에 대한 질문이 생깁니다. 로그인은 이전에 로그인한 상태값이 남아있어야 합니다.
예를 들어 로그인을 했는데 또 로그인을 해야 하는 서비스가 있다면 누구도 그 서비스를 이용하지 않을 겁니다.
세션기반 로그인 프로세스
1. 처음 로그인 >> 세션ID가 생성 >> 서버에서 세션ID를 쿠키로 설정해서 클라이언트에 전달
2. 클라이언트가 서버에 요청을 보낼 때 해당 세션ID를 쿠키로 담아서 전에 로그인했던 아이디인지 확인
3. 로그인을 유지
단점
1. 사용자의 상태에 관한 데이터를 서버에 저장했을 때 로그인 중인 유저의 수가 늘어난다면 서버의 메모리 과부화가 일어날 수 있습니다.
2. DB 중 RDBMS에 저장한다면 직렬화 및 역직렬화에 관한 오버헤드가 발생합니다.