로그인 기능을 이용할 때 쿠키, 세션, 토큰을 사용하는 이유는 결국 HTTP가 stateless(무상태), connectionless(비연결성) 이라는 특성을 가지고 있기 때문입니다.
쿠키
: 브라우저(클라이언트)에서 관리하는 작은 기록 정보 파일
브라우저는 매 요청마다 쿠키를 동봉해서 보내기 때문에 이 쿠키안에 상태정보를 저장하게 되면 이 데이터가 존재하면 로그인 상태로 아니면 로그아웃 상태로 설정해 줄 수 있습니다.
세션
쿠키와 가장 큰 차이점은 쿠키는 데이터를 브라우저에 저장하지만 세션은 서버단에 저장합니다.
서버에서 클라이언트를 구분하기 위해 세션ID를 부여합니다.
브라우저에 쿠키가 없을경우 서버에서 쿠키를 새롭게 설정해서 보내주는데 이때 세션ID를 부여해주며, 데이터는 서버단에 저장합니다.
브라우저에 쿠키가 있을경우 해당 세션ID 에 맞는 데이터를 찾고 해당 데이터를 이용해 로그인 기능을 구현할 수 있습니다.
단점 : 서버단에서 데이터를 저장하기때문에 보안에 좋지만 사용자가 많아지면 서버단에 저장해야할 데이터가 많아지기 때문에 서버 메모리를 많이 차지하게 됩니다.