안녕하세요 강사님 해당 강의를 통해서 엄청난 꺠달음과 영감을 얻게되어 감사하다는 말씀을 먼저 올리고싶습니다.
제가 해당 강의를 통해서 성장을 하여 감히 마이크로서비스를 이용해서 프로젝트를 진행하고 있습니다.
하지만 프로젝트를 진행하다 보니 몇일 동안 해결할 수 없는 문제와 마주하게 되어 이렇게 문의 드립니다.
우선 Spring Cloud Gateway 가 존재하고 User-Service 가 그 뒤에 위치해 있습니다.
User-Service 에서는 사용자가 로그인을 한다면 access_token 과 refresh_token 을 쿠키에 담아서 반환합니다.
그리고 로그아웃을 한다면 access_token 과 refresh_token 의 쿠키 값에 null 을 넣고 expires 를 과거로 만들어 만료되도록 합니다.
Front 에서는 로그인을 수행하면 access_token 과 refresh_token 을 잘 받아서 브라우저에 저장하는 것을 확인하였습니다.
로그아웃을 수행한다면 응답으로 set-cookie 를 잘 받아오는 것도 확인을 하였습니다.
- access_token=; expires= 1960 00:00:00 ... httpOnly;
- refresh_token=; expires= 1960 00:00:00... httpOnly;
하지만 실제 브라우저에서는 쿠키가 지워지지 않더라구요..
axios의 credential 과 gateway 에서의 cors filter 도 설정을 잘 하였습니다.
실제 프로젝트 소스는 아래에 있습니다.
- User-Service :: https://github.com/dhslrl321/PCUSS-User-Service
- Gateway Service :: https://github.com/dhslrl321/PCUSS-Gateway-Server
- Front 비동기 통신 코드 :: https://github.com/dhslrl321/PCUSS-Official-Site/blob/master/client/services/authService.js
- Front axios 모듈 :: https://github.com/dhslrl321/PCUSS-Official-Site/blob/master/client/utils/api.js
문제의 원인을 찾았습니다!
제가 이전에 테스트를 했던 환경에서는 Gateway 가 없었고 Gateway 를 도입하니 문제가 발생했다고 생각했습니다.
하지만 문제는 Gateway가 아니라 쿠키를 생성할 때 동일한 Path 를 지정해주지 않아서 발생하는 문제였습니다!
신규 강의 오픈으로 바쁜 와중에 번거롭게 해서 죄송합니다 ㅠㅠ
다음 강의도 기대하고 있겠습니다 !
댓글