-
Notifications
You must be signed in to change notification settings - Fork 2
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
The head ref may contain hidden characters: "Feature/#830-AccessToken_\uB9CC\uB8CC\uC2DC_\uB85C\uADF8\uC778_\uD654\uBA74\uC73C\uB85C_\uC774\uB3D9\uD558\uB294_\uAE30\uB2A5"
feat: 응답 코드가 401이면 로그인 화면으로 이동하는 기능 구현 #831
Conversation
리뷰어 요구사항을 반드시 확인해주세요 😃 |
There was a problem hiding this 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을 저장하면 될 것 같습니다
고생하셨습니다!
android/2023-emmsale/app/src/main/java/com/emmsale/data/common/retrofit/AuthInterceptor.kt
Outdated
Show resolved
Hide resolved
There was a problem hiding this 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 만료 에러가 뜨면
에서 만료 에러를 어떻게 판단할 수 있을까 였습니다.
방금 해당 로직에 대해 아마란스랑 이야기하고 있었는데, 관련 내용을 슬랙에서 나눠보면 좋을 듯 합니다.
android/2023-emmsale/app/src/main/java/com/emmsale/data/common/retrofit/AuthInterceptor.kt
Outdated
Show resolved
Hide resolved
There was a problem hiding this 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) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
401 코드의 의미는 정확히 access token이 만료되었을 때를 의미하는 것이 아니라 비인증을 나타낼 때 쓰이는 것이므로 401을 적절한 이름을 사용하여 상수화하면 어떨까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
비인증인 상황은 토큰이 만료된 경우, 유효하지 않은 경우가 있겠군요.
조금 더 추상적으로 isAccessTokenInvalid()
로 작성하면 두 의미를 모두 포함할 수 있겠네요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사실 토큰이 아니라 쿠키 혹은 세션으로 인증하는 방식이라면 비인증이 토큰이 유효하지 않은 경우와 일치하지 않는다고 생각합니다. 하지만 저희 앱은 토큰만 사용하기로 했으니 isAccessTokenInvalid()
가 괜찮을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
커디 앱에서는 JWT를 사용하고 있는데, 세션이라는 개념이 필요할까요..?
JWT를 사용한다면 401이 되는 상황은 크게 위에 말씀드린 두 가지 경우일 것이라고 생각이 드네요~
세션을 사용하지 않는데 메서드명에 Session까지 고려한 이름을 사용할 필요는 없다고 생각합니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
배포해도될거같아여!
#️⃣ 연관된 이슈
📝 작업 내용
response code가
401
이면 로그인 화면으로 이동하도록 구현하였습니다.스크린샷 (선택)
예상 소요 시간 및 실제 소요 시간 (일 / 시간 / 분)
예상 소요 시간 : 1시간
실제 소요 시간 : 30분
💬 리뷰어 요구사항 (선택)
테스트 권장 방법
Response.isAccessTokenExpired()
의 반환을 true로 설정하면 토큰이 만료되었을 때 상황을 가정할 수 있습니다.Refresh Token 도입된다면?
듣고 싶은 의견