인프런 커뮤니티 질문&답변

장태성님의 프로필 이미지
장태성

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

RefreshToken 만료되면 로그아웃

401에러 logout() 문제 auth_provider.dart에 logout() 함수 작성시 notifierListener() 추가시 해결했습니다.

작성

·

446

0

GoRouter 프로젝트에 적용하기 / RefreshToken 만료되면 로그아웃 영상 4분42초 부분에서

void logout() {
 ref.read(userMeProvider.notifier).logout();
 notifierListener(); // 이부분 삭제하셨음.
}

수업에서 notifierListener()를 삭제하셨지만,

제 경우에는 삭제하면 오히려 401 에러로 인해 splashScreen을 빠져나가지 못하고 App이 멈춰버리는 문제가 생깁니다.

오히려 그대로 놔두는 것이 잘 작동합니다.

버전 문제인지 뭔지는 모르지만 다른 분들에게 도움 되었으면 해서

글로 남겨봅니다.

혹시 삭제한 이유가 따로 있는 건지 궁금하기도 합니다.

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요.

혹시 지금까지 진행하신 프로젝트 레포지토리로 공유 가능하실까요?

제가 한번 확인해본 후 답변드리겠습니다!

장태성님의 프로필 이미지
장태성
질문자

https://github.com/bigdatachobo/flutter_lv2_course.git

branch - Applying-GoRouter

riverpod, gorouter 적용별로 브랜치 나눠서 저장했습니다.

Applying-GoRouter 브랜치에 들어가시면 됩니다.

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요.

오랫동안 고민해봤는데 아직은 문제점을 찾지 못했습니다.

실행이 잘 안되셨으니 어딘가 버그가 발생하는 조건이 있긴 할텐데 조금 더 봐봐야 할 것 같네요.

일단 notifyListeners()를 삭제한 이유는 이미 userProvider의 상태가 변경될때마다 notifyListeners()를 실행해고 있기 때문입니다. logout()을 할때 User State가 존재하는 상태에서 User State null 상태로 변경되니 자동으로 notifyListeners()가 실행됩니다. 그럼 버그가 존재할 수 있는 구간은 User State가 변경되지 않았을때입니다. 즉 User State 있는상태 -> User State 있는상태 또는 User State null 상태 -> User State null 상태입니다.

하지만 이미 null 상태였다면 redirect rule에서 걸려서 /login 페이지로 이동이 됐을것입니다. 반대의경우 / 페이지로 이동됐을 것이구요. 그래서 이 경우에도 사실상 버그가 있으면 안될 것 같습니다.

notifyListeners() 함수를 추가해서 버그가 사라졌다고 말씀하신 부분에서 redirectLogic이 새로 불리니 버그가 없어졌다고 볼 수 있는데 애초에 user state가 null 이었다면 처음부터 로그인페이지로 이동이 됐어야해서 현재 파악하기 어려운 상황입니다.

혹시 어떤 행동을 취한 뒤에 버그가 발생했는지 기억이 나실까요?

장태성님의 프로필 이미지
장태성
질문자

결론적으로 notifyListeners()를 주석처리하고 다시 디버그 모드로 실행하니

잘 작동합니다.

지금까진 서버를 계속 켜놓고(24/7),

수업을 들으면서 중간 중간 코드를 고치면서

시뮬레이터 작동되나 안 되나를 계속 체크 했습니다.

RefreshToken 로직을 아직 적용하기 전에 작동시키다보니

accessToken 5분 토큰 만료, refreshToken까지 만료된게 겹치다보니

에러가 난 게 아닌가 싶습니다.

정확한 이유는 저도 잘 모르겠네요;;;

 

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

네 그렇습니다. 일단 notifyListeners()가 필요한 경우라고 생각되니 조금 더 조사해보고 알려드리도록 하겠습니다!

장태성님의 프로필 이미지
장태성

작성한 질문수

질문하기