목록으로
웹뷰 · 인증

WebView access-token 무한 재요청 루프

만료 시각 계산 대신 서버 응답(401)을 기준으로 재발급하게 바꿔 무한 루프를 끊음.

Before — 만료 시각 기준API 요청토큰 재사용만료 시각 안 지남서버 401 거부무한 반복서버가 이미 거부한 토큰을 만료 시각만 믿고 계속 재사용After — 서버 401 기준API 요청401 → 강제 갱신forceRefresh새 토큰으로 재시도로그아웃은 재발급 응답이 401일 때만 · 네트워크 오류는 세션 유지같은 문제를 token-refresh-playground에서 재현하고 NestJS 통합 테스트로 증명
01

상황

WebView 환경에서 액세스 토큰 재요청이 끝없이 반복되는 현상이 있었습니다.

02

원인 분석

만료 시각만 보고 토큰을 재사용하던 로직 때문에, 서버가 이미 거부한(하지만 만료 시각은 아직 남은) 토큰을 계속 다시 쓰면서 재요청이 반복됐습니다.

03

해결

서버가 거부한 토큰은 만료 시각이 남아 있어도 다시 쓰지 않도록 강제 갱신(forceRefresh)을 두고, 재발급 기준을 서버의 401 응답으로 바꿨습니다. 재로그인 실패 시에도 서버 401일 때만 로그아웃하고, 네트워크 오류일 때는 세션을 유지하도록 나눴습니다.

04

결과 · 배운 점

무한 루프가 사라졌고, 인증이 시간 계산이 아니라 서버가 실제로 거부했는지(401)를 기준으로 동작하게 됐습니다.