JWT 인증과 로그인 상태 유지
웹 프로젝트를 진행하는 과정에서 jwt 인증과 로그인 상태 유지에 관해 질문이 있어 글 남깁니다. 현재 서버측에서 로그인 요청을 받고 로그인 완료 시에 클라이언트 측으로 access token 과 refresh token 을 응답으로 주고 client 측에서는 refresh token 은 cookie 에 access token 은 클라이언트 측 로컬 변수에 저장해 사용할 예정입니다. 로컬 변수에 access token 을 저장하면 페이지 리로드나 페이지 이동 시에 로그인 상태를 유지해야 하는데, 이를 처리하는 부분에서 고민점이 생겼습니다. 일단 인증이 필요한 요청이 아니더라도 서버 측에서 로그인 된 사용자라면 정보를 다르게 반환해줘야 하기 때문에 모든 요청에 대해서 로그인 된 사용자의 요청이라면 access token 을 헤더에 포함해 요청을 보내도록 할 것입니다. 첫번째 해결 방안은 클라이언트 측에서 페이지를 로드할 때 cookie 에 refresh token 값이 존재하면 로그인 된 상태라고 판단하고 서버측에 access token 재발급 요청을 보내는 방법입니다. 두번째 해결 방안은 서버측에서 인증이 필요한 요청을 받았을 때 access token 이 존재하지 않으면 받은 요청의 cookie 값을 확인하고 로그인 된 사용자라면 재발급 요청 신호를 클라이언트 측으로 보내고 로그인 된 사용자가 아니라면 로그인이 필요하다는 신호를 클라이언트 측으로 보내고, 서버측에서 인증이 필요하지는 않지만 로그인 된 사용자라면 정보를 다르게 반환해줘야 하기 때문에 access token 이 없이 온 요청에 대해서 cookie 값을 확인하고 로그인 된 사용자지만 access token 이 없으면 재발급 신호를 클라이언트 측에 보내고 클라이언트 측에서 재발급 요청을 보내고 access token 을 포함해 진행 중이던 요청을 다시 보내는 방법 이렇게 두가지를 생각해 봤습니다. 가장 간단한 방법은 access token 을 cookie 나 로컬 스토리지에 저장하는 방법이지만 보안을 위해 이 방법은 제외했습니다. 서버측에서 사용자의 로그인 상태를 확인하는 것은 jwt 의 장점을 무시하는 것 같기도 하고 서버측에서 지속적으로 사용자의 로그인 상태를 확인해야 해서 부담이 있을 것 같고 클라이언트 측에서 사용자의 로그인 여부를 판단하는 것은 과연 옳바른 해답인지 의문이 들어 질문 남깁니다.