fix: 세션 만료 시 화면 전체가 오류로 멈춤 — 무효/만료 자격증명은 401로 응답, 프론트는 토큰 제거 후 로그인 화면
세션 토큰(24h)이 만료되면 백엔드가 403을 돌려주는데 프론트는 401만 로그아웃 처리해 만료된 토큰을 계속 보내며 모든 패널이 '유효하지 않은 API 키' 오류로 멈췄음. - require_api_key/optional_api_key: 무효 자격증명 → 401 (403은 권한 부족 전용 유지) - api.ts: 403이라도 '유효하지 않은 API 키' 메시지면 토큰 제거 → 로그인 화면 (구버전 백엔드 호환) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -128,11 +128,19 @@ api.interceptors.response.use(
|
||||
window.location.reload()
|
||||
break
|
||||
|
||||
case 403:
|
||||
// 권한 부족
|
||||
case 403: {
|
||||
// 권한 부족. 단, 구버전 백엔드는 무효/만료 자격증명에도 403을 돌려주므로
|
||||
// 그 메시지면 401과 동일하게 토큰 제거 → 로그인 화면으로.
|
||||
const detail = String((error.response.data as any)?.detail ?? '')
|
||||
if (detail.includes('유효하지 않은 API 키')) {
|
||||
console.warn('Credential rejected (403):', config.url)
|
||||
localStorage.removeItem('api_key')
|
||||
window.location.reload()
|
||||
break
|
||||
}
|
||||
console.error('🚫 Permission denied:', message)
|
||||
// 필요시 권한 오류 토스트 표시
|
||||
break
|
||||
}
|
||||
|
||||
case 429:
|
||||
// 요청 제한
|
||||
|
||||
Reference in New Issue
Block a user