Conversation
|
eunsukimme
left a comment
There was a problem hiding this comment.
고생하셨습니다 이진님! 👍
한 가지 궁금한 점) 지금 크루 로그인 v2 API로 내려받는 크루 액세스 토큰은 매번 새로운 토큰을 발급하는 구조인거죠? refresh token 로직 추가이지만 사실상 refresh token 을 사용하진 않고 액세스 토큰만을 취급하는 것 같아서 헷갈려서 확인차 여쭤봐요~
그리고 사소하지만 9 * 60 * 60 * 1000 요런 매직 넘버는 따로 상수로 빼도 괜찮을 것 같아요 ㅎ
@eunsukimme |
|
@j-nary 아하 네~ 이해했어요. 액세스 토큰 갱신 차원에서 refresh 라는 말을 사용하신 거군요. 이슈에 달아주신 슬랙도 잠깐 보고왔는데, 토큰 유효시간이 10시간이라 브라우저 창을 10시간 넘게 띄워두면 이후 요청에 날아가는 토큰은 만료되어 정상 동작 하지 않는 이슈인 것으로 이해했네요(제가 이해한게 맞을까요?). 그렇다면 일단 이 방식으로 해결할 수 있을 것 같네요! 그리고 PR에 남겨주신 질문 중
에 대해 답변드리면, 일단 effect 사용을 최소화 하고자 하는 목적이 있었어서 컴포넌트 바깥에서 토큰 초기화 로직을 실행했었어요. 메모리 누수에 대한 생각은 크게 고려하진 않았는데, 말씀해주신 방식이 논리적으로 안전한 방식인 것 같아서 저도 동의해요. 저도 생각해보지 못 한 부분을 말씀해주셔서 감사합니다 💯 |
@eunsukimme 헉 맞습니다 제가 용어를 애매하게 사용하여 혼란을 드렸네요!
네! 맞습니다!
헉 저야말로 신경써서 확인해주셔서 정말 감사합니다 🙇♀️🙇♀️🙇♀️ |
🚩 관련 이슈
📋 작업 내용
📌 PR Point
문제 상황
crewToken의 만료기간은 10시간인데,refresh로직이 구현되어있지 않습니다.현재의 토큰 로직
playgroundToken을localStorage에서 받아옴playgroundToken없으면 login 페이지로 redirectplaygroundToken을 이용해getCrewTokenAPI 호출하여crewToken받아옴리액트 하이드레이션 에러를 피하기 위해, 해당 과정을 아래와 같이 분기 처리
해결 방안
해결 방안으로는 서버 만료기간이 10시간이니까, 클라에서는 9시간을 만료시간으로 잡고 refresh 하는 로직을 추가하는 것을 생각하였습니다. 로직 추가를 어디에 하느냐 하는 option은 아래와 같이 두 가지가 있을 것 같습니다.
if문 분기처리
컴포넌트 내부
setInterval이라는 refresh 로직을 추가시킴으로써, 컴포넌트 라이프사이클과 독립적으로 실행되어 컴포넌트가 언마운트 되더라도setInterval이 계속 남아있어 메모리 누수 위험이 있을 수 있을 것 같습니다.useEffect도 컴포넌트가 마운트된 후에 실행되기 때문에 SSR 환경에서도 안전하게 클라이언트 전용 작업을 수행할 수 있고, 무엇보다 클린업 처리가 가능해서 메모리 누수를 방지할 수 있다고 판단했습니다.playgroundToken으로 연결하던 중에, 리액트 하이드레이션 에러가 발생하여서 if문 분기처리가 불가피했는지에 대한 의견과 혹시 더 좋은 방안이 있을 지에 대한 의견을 듣고 싶습니다!