로그인 방식을 cookie와 session 방식만 알고 있었는데
이번에 spring boot + react로 된 프로젝트를 하게 되면서 jwt라는 걸 알게 되었다.
장단점이 있기 때문에 본인의 프로젝트의 환경을 보고 적절히 골라서 쓰면 된다.
비 연결적인 특성으로 연결이 해제됨과 동시에 서버와 클라이언트는 클라이언트가 이전에 요청한 결과에 대해 잊어버리게 된다. 따라서 요청을 할 때마다 서버에 연결을 해야한다.
HTTP의 이러한 특성으로 인해 'Stateless Protocol'이라고 불리기도 하며 웹사이트는 매 페이지에서 로그인이 되어있는 상태인지 확인하는 로그인 인증 방식이 필요하다.
방문자가 웹서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 session이라고 한다.
웹서버는 이러한 각 단위에 세션 Id를 부여하고 같은 브라우저인지 구별한다.
브라우저를 닫거나 서버에서 이 (세션 Id가 들어있는)쿠키를 삭제했을때 삭제가 된다.
session을 사용한다고 해서 cookie를 안쓰는 것은 아니다. 다만 cookie에 중요 정보를 넣지 않았기 때문에 탈취 되더라도 해석해도 의미없는 문자열인 세션 Id가 들어있다.