Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: sse refresh token 만료시 발생하는 error handling #97

Merged
merged 1 commit into from
Oct 4, 2024

Conversation

CLOUDoort
Copy link
Contributor

💡 작업 내용

  • refresh token이 만료되어 refreshToken function에서 throw한 error를 onerror 이벤트에서 try...catch로 캐치하여 사용자를 로그아웃 시키고 로그인페이지로 redirect시키고 재로그인을 유도한다.

💡 자세한 설명

SSE 에러가 발생하는 경우는 두 가지 경우이다.

첫 번째는 EventSourcePolyfill을 사용해서 default 45초 동안, 또는 서버와 합의해서 설정한 heartbeat(30분) 시간 동안 아무 요청이 없으면 연결을 끊어서 에러가 발생한다.
onerror 이벤트에서 연결을 close하고 3초뒤에 다시 재연결함으로써 error를 handling 한다.

두 번째는 이번에 해결하려는 재연결을 하는 과정에서 토큰이 만료되는 문제이다.
onerror 이벤트에서 재연결을 할 때 access token이 만료되거나 없으면 refreshToken function을 사용해서 쿠키에 담겨 있는 refresh token을 기반으로 access token을 재발급한다.
하지만 refresh token이 만료된 상황이라면 refreshToken function에서 error를 throw한다.
onerror 이벤트에서는 try...catch로 error를 캐치하여 사용자를 로그아웃 시키고 로그인페이지로 redirect시키고 재로그인을 유도한다.

✅ 셀프 체크리스트

  • PR 제목을 형식에 맞게 작성했나요?
  • 브랜치 전략에 맞는 브랜치에 PR을 올리고 있나요? (master/main이 아닙니다.)
  • 이슈는 close 했나요?
  • Reviewers, Labels, Projects를 등록했나요?
  • 작업 도중 문서 수정이 필요한 경우 잘 수정했나요?
  • 테스트는 잘 통과했나요?
  • 불필요한 코드는 제거했나요?

closes #95

@CLOUDoort CLOUDoort added ✨feature 구현, 개선 사항 관련 부분 🐛bug 버그 발견 👩🏻‍💻frontend 프론트엔드 작업 labels Oct 4, 2024
Copy link
Contributor

@aquaman122 aquaman122 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SSE 토큰 에러 수정하신거 확인했습니다! 고생하셨어요

@CLOUDoort CLOUDoort merged commit 5ebdf33 into dev Oct 4, 2024
@CLOUDoort CLOUDoort deleted the fix/sse-error branch October 5, 2024 04:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛bug 버그 발견 ✨feature 구현, 개선 사항 관련 부분 👩🏻‍💻frontend 프론트엔드 작업
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants