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

feat: 응답 코드가 401이면 로그인 화면으로 이동하는 기능 구현 #831

Conversation

tmdgh1592
Copy link
Member

@tmdgh1592 tmdgh1592 commented Nov 8, 2023

#️⃣ 연관된 이슈

close : #830

📝 작업 내용

response code가 401 이면 로그인 화면으로 이동하도록 구현하였습니다.

스크린샷 (선택)

예상 소요 시간 및 실제 소요 시간 (일 / 시간 / 분)

예상 소요 시간 : 1시간
실제 소요 시간 : 30분

💬 리뷰어 요구사항 (선택)

테스트 권장 방법

  • Response.isAccessTokenExpired() 의 반환을 true로 설정하면 토큰이 만료되었을 때 상황을 가정할 수 있습니다.

Refresh Token 도입된다면?

  • RefreshToken으로 AccessToken을 재발급받습니다.
  • 새롭게 발급받은 AccessToken으로 Interceptor에 새롭게 토큰을 추가하여 재요청합니다.

듣고 싶은 의견

  • RefreshToken이 만료된다면 로그인 화면으로 이동해야 합니다.
  • 그렇다면, RefreshToken이 만료된 사실은 어떻게 알 수 있을까요?

@tmdgh1592 tmdgh1592 added Android 안드로이드 관련 이슈 기능 추가 새로운 기능 추가 및 기존 기능 변경 labels Nov 8, 2023
@tmdgh1592 tmdgh1592 self-assigned this Nov 8, 2023
@tmdgh1592
Copy link
Member Author

리뷰어 요구사항을 반드시 확인해주세요 😃

Copy link
Collaborator

@chws0508 chws0508 left a comment

Choose a reason for hiding this comment

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

RefreshToken이 만료된다면 로그인 화면으로 이동해야 합니다.
그렇다면, RefreshToken이 만료된 사실은 어떻게 알 수 있을까요?

accessToken이 만료되었을 때, 리프레시 토큰과 함께 백엔드로 새로운 accesstoken 값을 요청하는 api를 쏠텐데, 그 때 refreshtoken 만료 에러가 뜨면 그때서야 navigateToLogin으로 이동하고 깃허브 로그인을 통해 새로운 refreshtoken을 저장하면 될 것 같습니다

고생하셨습니다!

Copy link
Member Author

@tmdgh1592 tmdgh1592 left a comment

Choose a reason for hiding this comment

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

accessToken이 만료되었을 때, 리프레시 토큰과 함께 백엔드로 새로운 accesstoken 값을 요청하는 api를 쏠텐데, 그 때 refreshtoken 만료 에러가 뜨면 그때서야 navigateToLogin으로 이동하고 깃허브 로그인을 통해 새로운 refreshtoken을 저장하면 될 것 같습니다.

제가 궁금했던 내용은 refreshtoken 만료 에러가 뜨면 에서 만료 에러를 어떻게 판단할 수 있을까 였습니다.
방금 해당 로직에 대해 아마란스랑 이야기하고 있었는데, 관련 내용을 슬랙에서 나눠보면 좋을 듯 합니다.

Copy link
Collaborator

@ki960213 ki960213 left a comment

Choose a reason for hiding this comment

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

고생하셨습니다.
Refresh token 만료 여부는 슬랙에서 논의해보면 좋을 것 같아요.
간단한 코멘트 남겼으니 자율적으로 반영 후 머지해주세요 👍

return response
}

private fun Response.isAccessTokenExpired(): Boolean = (code == 401)
Copy link
Collaborator

Choose a reason for hiding this comment

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

401 코드의 의미는 정확히 access token이 만료되었을 때를 의미하는 것이 아니라 비인증을 나타낼 때 쓰이는 것이므로 401을 적절한 이름을 사용하여 상수화하면 어떨까요?

Copy link
Member Author

Choose a reason for hiding this comment

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

비인증인 상황은 토큰이 만료된 경우, 유효하지 않은 경우가 있겠군요.
조금 더 추상적으로 isAccessTokenInvalid() 로 작성하면 두 의미를 모두 포함할 수 있겠네요.

Copy link
Collaborator

Choose a reason for hiding this comment

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

사실 토큰이 아니라 쿠키 혹은 세션으로 인증하는 방식이라면 비인증이 토큰이 유효하지 않은 경우와 일치하지 않는다고 생각합니다. 하지만 저희 앱은 토큰만 사용하기로 했으니 isAccessTokenInvalid()가 괜찮을까요?

Copy link
Member Author

Choose a reason for hiding this comment

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

커디 앱에서는 JWT를 사용하고 있는데, 세션이라는 개념이 필요할까요..?
JWT를 사용한다면 401이 되는 상황은 크게 위에 말씀드린 두 가지 경우일 것이라고 생각이 드네요~

세션을 사용하지 않는데 메서드명에 Session까지 고려한 이름을 사용할 필요는 없다고 생각합니다.

@tmdgh1592
Copy link
Member Author

@chws0508 @ki960213
리뷰 반영하고 의견을 남겨놓았습니다!
확인 후 크게 변경할 부분이 없다면 approve 부탁드립니다 : )

Copy link
Collaborator

@chws0508 chws0508 left a comment

Choose a reason for hiding this comment

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

배포해도될거같아여!

@tmdgh1592 tmdgh1592 merged commit 08f8f03 into android-main Nov 8, 2023
1 check passed
@tmdgh1592 tmdgh1592 deleted the Feature/#830-AccessToken_만료시_로그인_화면으로_이동하는_기능 branch November 8, 2023 07:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Android 안드로이드 관련 이슈 기능 추가 새로운 기능 추가 및 기존 기능 변경
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants