개발자
안녕하세요, React native에서 각 탭들이 서로 다른 웹뷰를 사용하고 있습니다. 한 탭에서 accesstoken을 refresh를 하고 있는 상태에서 다른 탭에 들어갈 경우 refresh token이 갱신되지 않은 상태에서 요청을 보내 동시성 이슈(race condition)가 발생할 수 있을 거 같은데 어떻게 해결해야 할까요? 그냥 단일 웹일 때에는 axios interceptor에서 큐에 넣어서 해결했는데.. 토큰을 갱신해야 할 때마다 앱단으로 보내준 다음에 거기서 큐로 처리하고 완료되면 각 웹뷰로 뿌려주는 방식으로 가야 하려나요? 현직에 계신 분들 웹뷰 auth 어떻게 처리하시나 궁금합니다.
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 08월 31일
웹뷰에서 토큰을 처리하는 방법은 여러 가지가 있습니다. 1. 중앙화된 Auth 서비스: 모든 웹뷰 호출이 중앙의 인증 서비스를 거치도록 하여 인증 토큰을 관리하면 race condition 문제를 해결할 수 있습니다. 이렇게 하면 애플리케이션의 모든 부분에서 동일한 상태를 보장합니다. 2. Locks 또는 Semaphore: 동시성 이슈를 해결하는 또 다른 방법은 잠금 메커니즘을 사용하여 accesstoken 요청이 완료될 때까지 다른 요청들을 기다리게 하는 것입니다. 이 접근 방식은 프로그래밍 복잡성이 증가할 수 있으나, 필요한 경우에만 토큰 요청을 수행하므로 리소스를 절약할 수 있습니다. 3. 단일 웹뷰 아키텍처: 각 탭간에 인증상태를 공유하기 위해 단일 웹뷰 아키텍처로 전환하는 것도 한 가지 해결책입니다. 각 탭에 대해 별도의 웹뷰 대신, 각 탭 내용을 로드하는 단일 웹뷰를 사용합니다. 4. Refresh Token 저장 및 재사용: 로컬에 Refresh 토큰을 저장하고 필요할 때 마다 사용하는 방법입니다. 이렇게 하면 모든 웹뷰가 동일한 토큰을 사용하므로 동시성 문제를 해결할 수 있습니다. 이러한 방법 중에서 가장 적합한 방법을 선택하는 것은 앱의 유형, 요구 사항 및 현재 아키텍처에 따라 달라질 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!