최근 내 프로젝트 (spring boot + thymeleaf)에 spring boot와 jwt 토큰을 발급해서 로그인을 구현하려는 시도를 했었다. 그러나 여기저기 구글링을 해보고 많이 찾아봐도 Api로 로그인 테스트만 하고 막상 프로젝트에 실제로 구현을 한 사례가 없어서 왜인지 찾아봤는데 깨달은 결과는 SSR의 기반 방식의 경우 JWT를 사용하는 경우는 거의 없다는것,, SSR 경우 대부분 세션-쿠키를 이용해 stateful하게 상태 관리를 하지만 Spring Security +jwt는 stateless한 방식으로 상태 관리를 한다. Cookie에 사용자 정보를 저장해 관리할 수 있지만 코드의 보안, 복잡도, 생산성 모두 떨어지기에 굳이 사용하지 않는다
JWT는 프론트와 백엔드가 분리된 형태에서 주로 사용되고(모바일 앱을 위한 API 서버, 리액트와 같은 웹액의 프론트가 있는 서버) 분리된 형태에서 프론트 측이 로그인시 axios와 같은 API Client로 요청을 보내면 로그인에 성공했을시 응답 헤더에 JWT가 담겨 있다. 그 후 axios의 자바스크립트 코드로 응답 헤더의 토큰을 꺼내어 웹 로컬 스토리지에 저장하고, 데이터 요청시 자바 스크립트 구문을 통해 자동으로 로컬 스토리지에서 토큰을 찾아 요청 헤더에 넣도록 구현 할 수 있다.