서버가 서비스를 요청하는 client가 누구인지를 지속적으로 구분하는 것이 로그인이다.
서버 입장에서는 모든 client의 요청이 다 새로운 요청임.
서버는 응답하고나면 기억을 못하니까.... client는 많은데 서버는 하나잖음
로그인이라는건 지금 막 들어온 요청이 새로운 요청이 아니라 3초전에 요청했던 그넘이다! 라는걸 기억하는 행위임.
요청하고 응답하면 서버와 클라이언트의 연결은 끊어짐 (stateless)
그럼 어떻게 기억하지?
클라이언트와 WAS서버 (프로그램이 돌아가는 컨테이너)가 있음.
클라어인트가 서버에 요청을 보내면 그걸 구분하기 위한 세션이 자동적으로 만들어짐
세션은 숫자와 문자가 종합된 키임 (session id라고 함)
session id : 서버에 접속하면 client를 구분하기 위한 고유한 키 값
프로그램의 정보를 보관하는곳이 세션이라고 할 수 있음.
그리고 세션이 만들어지면 쿠키가 만들어짐. (얘는 PC에 저장되는 넘임. 세션은 서버에 저장되는 넘이고..)
쿠키는 map 방식(key:value, value는 only string)으로 데이터를 저장됨
그리고 이 생긴 쿠키를 client로 response할 때 같이 보내버림
그 쿠키로 로그인 ㅇㅋㅇㅋ 하는거임
근데 이 client가 2번째 요청(request)을 하면 클라이언트 브라우저에 있는 모든 쿠키가 서버로 같이 날아감.
날린 쿠키값을 서버에서 확인해서 아! 세션에 저장했던 쿠키값이구나! 하게되면
전에 응답 보냈던 넘이구나...를 알게 되는 것이다.
-> 이렇게 되면 로그인 유지가 되는 것이다. 이걸로 로그인이 완료된 채로 페이지를 옮겨다닐 수 있음
그래서 보통 쿠키에 만료 시간을 둬서 로그인이 풀리게 만든다.
'컴퓨터 > WEB' 카테고리의 다른 글
[Spring] Servlet, JSP 그리고 MVC 패턴 (0) | 2022.09.18 |
---|---|
[Django] 장고 User 모델 OneToOneField로 확장해서 사용하기 + 토큰으로 로그인하기 (0) | 2022.05.14 |
[Django] PythonAnywhere로 Django 프로젝트 배포하기 (0) | 2022.05.01 |
[Django] Django의 Migration (0) | 2022.04.30 |
[Django] Template Language (0) | 2022.04.28 |