401에러 logout() 문제 auth_provider.dart에 logout() 함수 작성시 notifierListener() 추가시 해결했습니다.
566
작성한 질문수 13
GoRouter 프로젝트에 적용하기 / RefreshToken 만료되면 로그아웃 영상 4분42초 부분에서
void logout() {
ref.read(userMeProvider.notifier).logout();
notifierListener(); // 이부분 삭제하셨음.
}수업에서 notifierListener()를 삭제하셨지만,
제 경우에는 삭제하면 오히려 401 에러로 인해 splashScreen을 빠져나가지 못하고 App이 멈춰버리는 문제가 생깁니다.
오히려 그대로 놔두는 것이 잘 작동합니다.
버전 문제인지 뭔지는 모르지만 다른 분들에게 도움 되었으면 해서
글로 남겨봅니다.
혹시 삭제한 이유가 따로 있는 건지 궁금하기도 합니다.
답변 1
0
안녕하세요.
혹시 지금까지 진행하신 프로젝트 레포지토리로 공유 가능하실까요?
제가 한번 확인해본 후 답변드리겠습니다!
0
https://github.com/bigdatachobo/flutter_lv2_course.git
branch - Applying-GoRouter
riverpod, gorouter 적용별로 브랜치 나눠서 저장했습니다.
Applying-GoRouter 브랜치에 들어가시면 됩니다.
0
안녕하세요.
오랫동안 고민해봤는데 아직은 문제점을 찾지 못했습니다.
실행이 잘 안되셨으니 어딘가 버그가 발생하는 조건이 있긴 할텐데 조금 더 봐봐야 할 것 같네요.
일단 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 이었다면 처음부터 로그인페이지로 이동이 됐어야해서 현재 파악하기 어려운 상황입니다.
혹시 어떤 행동을 취한 뒤에 버그가 발생했는지 기억이 나실까요?
0
결론적으로 notifyListeners()를 주석처리하고 다시 디버그 모드로 실행하니
잘 작동합니다.
지금까진 서버를 계속 켜놓고(24/7),
수업을 들으면서 중간 중간 코드를 고치면서
시뮬레이터 작동되나 안 되나를 계속 체크 했습니다.
RefreshToken 로직을 아직 적용하기 전에 작동시키다보니
accessToken 5분 토큰 만료, refreshToken까지 만료된게 겹치다보니
에러가 난 게 아닌가 싶습니다.
정확한 이유는 저도 잘 모르겠네요;;;
[GoRouter & Authentication 마무리하기] 401 에러
4
923
2
자동 패키지 임포트 관련 질문 드립니다.
0
652
1
초급 중급 마무리한 학생입니다.. 파베관련 질문 하나만 받아주실 수 있을까요
0
440
1
Pagination 질문드립니다
0
473
1
레이아웃에 대해서 궁금한 질문!
0
499
1
강의에 적용된 디자인 패턴이 뭔가요??
1
676
1
네스팅 방식으로 goRouter Go를 사용할때, 앱바타이틀이 정상적으로 표시되지 않는 문제
0
564
2
GoRouter return이 안됩니다.
0
598
1
UserModel 에서는 IModelWithId를 implements하지 않는 이유가 있나요?
-1
540
1
서버쪽 /user/me api에서 에러가 나서 확인해보니..
0
410
1
[에러] GoRouter 적용, 401 에러가 뜹니다
0
365
1
ref.read.update // state + 1
0
449
1
typedef itemBuilder 제네릭 관련 질문이 있습니다.
0
453
1
[상태관리] Riverpod을 쓰신 이유가 있으신가요?
0
669
1
Dio 질문드립니다.!
0
780
2
CursorPagination 캐스팅 관련 문의
0
410
1
CursorPagination 캐시팅 관련 문의
0
399
2
AuthRepository 클래스 token() 함수는 Dead Code 아닌가요?
0
362
1
Rating을 GET 요청할때 DioError가 발생합니다.
-1
609
1
Token 관련 질문 드립니다.
0
452
2
수업의 내용은 아니지만 궁금해서 여쭤봅니다.
0
575
1
refresh 토큰 재발급 요청에 대해서
0
1688
1
_App 클래스가 ConsumerWidget을 상속 받으면 에러가 생깁니다
0
2553
4
이번 플러터와 다트 업데이트에서
1
268
1





