Flutter

[Flutter] W/Firestore( 3783): (24.2.0) [Firestore]

에릭 Kim 2022. 8. 18. 16:52
반응형

Firebase를 연동시킨 프로젝트를 실행하다 보면 다음과 같은 에러를 만날 수 있습니다.

 

 W/Firestore( 3783): (24.2.0) [Firestore]:

Listen for Query(target=Query(users/dvGKULWHQYSkAjzpftRNB4XxGjn2 order by __name__);limitType=LIMIT_TO_FIRST) failed: 

Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}

 

이 에러는 사용자가 firestore에 접근할 수 있는 권한이 거부되었기 때문에 발생하는 에러입니다 !!

 

처음 firestore를 실행시킬 때 데이터베이스를 테스트 모드로 생성했다면 다음과 같은 규칙이 자동으로 적용됩니다. 

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if
          request.time < timestamp.date(2022, 8, 15);
    }
  }
}

이 규칙은 request.time의 timestamp가 2022.8.15 이하일 경우, 모든 읽기와 쓰기를 허용한다는 뜻입니다. 

 

그렇기에 그 이후에 접근하는 값들에 대해서는 권한이 거부될 수 밖에 없습니다. 이러한 상황에서는 다음과 같이 규칙을 바꿔주면 정상적으로 작동하게 됩니다. 

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if
        request.auth.uid != null;
    }
  }
}

인증된 모든 사용자가 권한에 접근할 수 있는 방법인데, auth.uid는 firebase의 authentication를 통해 로그인 된 사용자를 의미하고, 그러한 사용자들에 한해서 접근을 허용한다는 것입니다. 만약 그 값이 null이면 권한이 제한됩니다. 

 

firebase console에 들어가, firestore의 규칙을 바꿔주시면 정상적으로 작동하는 것을 확인할 수 있습니다 !! 

 

반응형