Firestore错误->错误:缺少权限或权限不足

uch*_*uch 5 javascript google-cloud-firestore

我的应用程序有时会在客户端前端使用Firestore的应用程序中出现此错误(JS Firebase / Firestore SDK库)。我认为这就像一个速率限制问题,但是我在Firebase上的设置是Blaze(即用即付),所以我偶尔会遇到这样的问题吗?

在开发期间,清除我的缓存/等待它/切换会话或浏览器似乎可以解决问题。不知道为什么偶尔会发生这种情况,或者为什么四处逛逛会解决它。

我目前已经firebase.auth().signOut()在我的应用程序中实现了,但是无论何时发生,注销并重新登录似乎都无法解决问题。

这是该问题的我的开发人员控制台堆栈跟踪:

index.js:2177 Firestore error -> Error: Missing or insufficient permissions.
    at new FirestoreError (error.js:149)
    at JsonProtoSerializer../node_modules/@firebase/firestore/dist/esm/src/remote/serializer.js.JsonProtoSerializer.fromRpcStatus (serializer.js:93)
    at JsonProtoSerializer../node_modules/@firebase/firestore/dist/esm/src/remote/serializer.js.JsonProtoSerializer.fromWatchChange (serializer.js:536)
    at PersistentListenStream../node_modules/@firebase/firestore/dist/esm/src/remote/persistent_stream.js.PersistentListenStream.onMessage (persistent_stream.js:389)
    at persistent_stream.js:331
    at persistent_stream.js:306
    at async_queue.js:83
    at <anonymous>
__stack_frame_overlay_proxy_console__ @ index.js:2177
(anonymous) @ SideMenu.js:91
Promise rejected (async)
componentDidUpdate @ SideMenu.js:88
commitLifeCycles @ react-dom.development.js:11517
commitAllLifeCycles @ react-dom.development.js:12294
callCallback @ react-dom.development.js:1299
invokeGuardedCallbackDev @ react-dom.development.js:1338
invokeGuardedCallback @ react-dom.development.js:1195
commitAllWork @ react-dom.development.js:12415
workLoop @ react-dom.development.js:12687
callCallback @ react-dom.development.js:1299
invokeGuardedCallbackDev @ react-dom.development.js:1338
invokeGuardedCallback @ react-dom.development.js:1195
performWork @ react-dom.development.js:12800
scheduleUpdateImpl @ react-dom.development.js:13185
scheduleUpdate @ react-dom.development.js:13124
enqueueSetState @ react-dom.development.js:9646
./node_modules/react/cjs/react.development.js.ReactComponent.setState @ react.development.js:218
onStateChange @ connectAdvanced.js:205
dispatch @ createStore.js:173
(anonymous) @ Utils.js:162
Promise resolved (async)
(anonymous) @ Utils.js:146
getGoogleCloudProjectsWithPromise @ Utils.js:115
(anonymous) @ AppMenu.js:126
Promise resolved (async)
finalizeLogin @ AppMenu.js:123
e.g @ auth.js:23
Yb @ auth.js:26
Ub @ auth.js:26
./node_modules/@firebase/auth/dist/auth.js.h.Mb @ auth.js:25
Cb @ auth.js:19
Promise resolved (async)
zb @ auth.js:18
yb @ auth.js:18
Vb @ auth.js:25
Eb @ auth.js:24
(anonymous) @ auth.js:19
(anonymous) @ auth.js:142
(anonymous) @ auth.js:138
qd @ auth.js:45
G @ auth.js:44
ef @ auth.js:77
./node_modules/@firebase/auth/dist/auth.js.h.fc @ auth.js:75
./node_modules/@firebase/auth/dist/auth.js.h.zb @ auth.js:75
XMLHttpRequest.send (async)
(anonymous) @ VM7143:1
Ye @ auth.js:73
./node_modules/@firebase/auth/dist/auth.js.Ch.m @ auth.js:138
Kh @ auth.js:137
(anonymous) @ auth.js:142
z @ auth.js:19
Qh @ auth.js:142
(anonymous) @ auth.js:153
e.g @ auth.js:23
Yb @ auth.js:26
Ub @ auth.js:26
./node_modules/@firebase/auth/dist/auth.js.h.Mb @ auth.js:25
Cb @ auth.js:19
Promise resolved (async)
zb @ auth.js:18
yb @ auth.js:18
Vb @ auth.js:25
Eb @ auth.js:24
A @ auth.js:20
./node_modules/@firebase/auth/dist/auth.js.h.get @ auth.js:181
./node_modules/@firebase/auth/dist/auth.js.pj.get @ auth.js:184
ml @ auth.js:240
ll @ auth.js:239
ul @ auth.js:242
(anonymous) @ auth.js:286
./node_modules/@firebase/app/dist/esm/src/firebaseApp.js.FirebaseAppImpl._getService @ firebaseApp.js:116
FirebaseAppImpl.(anonymous function) @ firebaseApp.js:303
(anonymous) @ auth.js:286
(anonymous) @ firebaseApp.js:323
callAppHooks @ firebaseApp.js:316
initializeApp @ firebaseApp.js:247
./src/redux/factory.js @ factory.js:49
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/components/AppMenu.js @ Utils.js:170
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/App.js @ fetch.js:461
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/index.js @ Start.js:50
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
0 @ index.css?b74f:26
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
./node_modules/@firebase/app/dist/esm/index.js.Object.defineProperty.value @ bootstrap 6a68f7b55db27319f480:724
(anonymous) @ bundle.js:728
index.js:2177 Firestore error -> Error: Missing or insufficient permissions.
    at new FirestoreError (error.js:149)
    at JsonProtoSerializer../node_modules/@firebase/firestore/dist/esm/src/remote/serializer.js.JsonProtoSerializer.fromRpcStatus (serializer.js:93)
    at JsonProtoSerializer../node_modules/@firebase/firestore/dist/esm/src/remote/serializer.js.JsonProtoSerializer.fromWatchChange (serializer.js:536)
    at PersistentListenStream../node_modules/@firebase/firestore/dist/esm/src/remote/persistent_stream.js.PersistentListenStream.onMessage (persistent_stream.js:389)
    at persistent_stream.js:331
    at persistent_stream.js:306
    at async_queue.js:83
    at <anonymous>
__stack_frame_overlay_proxy_console__ @ index.js:2177
(anonymous) @ SideMenu.js:91
Promise rejected (async)
componentDidUpdate @ SideMenu.js:88
commitLifeCycles @ react-dom.development.js:11517
commitAllLifeCycles @ react-dom.development.js:12294
callCallback @ react-dom.development.js:1299
invokeGuardedCallbackDev @ react-dom.development.js:1338
invokeGuardedCallback @ react-dom.development.js:1195
commitAllWork @ react-dom.development.js:12415
workLoop @ react-dom.development.js:12687
callCallback @ react-dom.development.js:1299
invokeGuardedCallbackDev @ react-dom.development.js:1338
invokeGuardedCallback @ react-dom.development.js:1195
performWork @ react-dom.development.js:12800
scheduleUpdateImpl @ react-dom.development.js:13185
scheduleUpdate @ react-dom.development.js:13124
enqueueSetState @ react-dom.development.js:9646
./node_modules/react/cjs/react.development.js.ReactComponent.setState @ react.development.js:218
onStateChange @ connectAdvanced.js:205
dispatch @ createStore.js:173
(anonymous) @ AppMenu.js:128
Promise resolved (async)
(anonymous) @ AppMenu.js:126
Promise resolved (async)
finalizeLogin @ AppMenu.js:123
e.g @ auth.js:23
Yb @ auth.js:26
Ub @ auth.js:26
./node_modules/@firebase/auth/dist/auth.js.h.Mb @ auth.js:25
Cb @ auth.js:19
Promise resolved (async)
zb @ auth.js:18
yb @ auth.js:18
Vb @ auth.js:25
Eb @ auth.js:24
(anonymous) @ auth.js:19
(anonymous) @ auth.js:142
(anonymous) @ auth.js:138
qd @ auth.js:45
G @ auth.js:44
ef @ auth.js:77
./node_modules/@firebase/auth/dist/auth.js.h.fc @ auth.js:75
./node_modules/@firebase/auth/dist/auth.js.h.zb @ auth.js:75
XMLHttpRequest.send (async)
(anonymous) @ VM7143:1
Ye @ auth.js:73
./node_modules/@firebase/auth/dist/auth.js.Ch.m @ auth.js:138
Kh @ auth.js:137
(anonymous) @ auth.js:142
z @ auth.js:19
Qh @ auth.js:142
(anonymous) @ auth.js:153
e.g @ auth.js:23
Yb @ auth.js:26
Ub @ auth.js:26
./node_modules/@firebase/auth/dist/auth.js.h.Mb @ auth.js:25
Cb @ auth.js:19
Promise resolved (async)
zb @ auth.js:18
yb @ auth.js:18
Vb @ auth.js:25
Eb @ auth.js:24
A @ auth.js:20
./node_modules/@firebase/auth/dist/auth.js.h.get @ auth.js:181
./node_modules/@firebase/auth/dist/auth.js.pj.get @ auth.js:184
ml @ auth.js:240
ll @ auth.js:239
ul @ auth.js:242
(anonymous) @ auth.js:286
./node_modules/@firebase/app/dist/esm/src/firebaseApp.js.FirebaseAppImpl._getService @ firebaseApp.js:116
FirebaseAppImpl.(anonymous function) @ firebaseApp.js:303
(anonymous) @ auth.js:286
(anonymous) @ firebaseApp.js:323
callAppHooks @ firebaseApp.js:316
initializeApp @ firebaseApp.js:247
./src/redux/factory.js @ factory.js:49
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/components/AppMenu.js @ Utils.js:170
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/App.js @ fetch.js:461
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/index.js @ Start.js:50
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
0 @ index.css?b74f:26
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
./node_modules/@firebase/app/dist/esm/index.js.Object.defineProperty.value @ bootstrap 6a68f7b55db27319f480:724
(anonymous) @ bundle.js:728
index.js:2177 Firestore error -> Error: Missing or insufficient permissions.
    at new FirestoreError (error.js:149)
    at JsonProtoSerializer../node_modules/@firebase/firestore/dist/esm/src/remote/serializer.js.JsonProtoSerializer.fromRpcStatus (serializer.js:93)
    at JsonProtoSerializer../node_modules/@firebase/firestore/dist/esm/src/remote/serializer.js.JsonProtoSerializer.fromWatchChange (serializer.js:536)
    at PersistentListenStream../node_modules/@firebase/firestore/dist/esm/src/remote/persistent_stream.js.PersistentListenStream.onMessage (persistent_stream.js:389)
    at persistent_stream.js:331
    at persistent_stream.js:306
    at async_queue.js:83
    at <anonymous>
__stack_frame_overlay_proxy_console__ @ index.js:2177
(anonymous) @ SideMenu.js:91
Promise rejected (async)
componentDidUpdate @ SideMenu.js:88
commitLifeCycles @ react-dom.development.js:11517
commitAllLifeCycles @ react-dom.development.js:12294
callCallback @ react-dom.development.js:1299
invokeGuardedCallbackDev @ react-dom.development.js:1338
invokeGuardedCallback @ react-dom.development.js:1195
commitAllWork @ react-dom.development.js:12415
workLoop @ react-dom.development.js:12687
callCallback @ react-dom.development.js:1299
invokeGuardedCallbackDev @ react-dom.development.js:1338
invokeGuardedCallback @ react-dom.development.js:1195
performWork @ react-dom.development.js:12800
scheduleUpdateImpl @ react-dom.development.js:13185
scheduleUpdate @ react-dom.development.js:13124
enqueueSetState @ react-dom.development.js:9646
./node_modules/react/cjs/react.development.js.ReactComponent.setState @ react.development.js:218
onStateChange @ connectAdvanced.js:205
dispatch @ createStore.js:173
routeAfterLogin @ AppMenu.js:200
(anonymous) @ AppMenu.js:129
Promise resolved (async)
(anonymous) @ AppMenu.js:126
Promise resolved (async)
finalizeLogin @ AppMenu.js:123
e.g @ auth.js:23
Yb @ auth.js:26
Ub @ auth.js:26
./node_modules/@firebase/auth/dist/auth.js.h.Mb @ auth.js:25
Cb @ auth.js:19
Promise resolved (async)
zb @ auth.js:18
yb @ auth.js:18
Vb @ auth.js:25
Eb @ auth.js:24
(anonymous) @ auth.js:19
(anonymous) @ auth.js:142
(anonymous) @ auth.js:138
qd @ auth.js:45
G @ auth.js:44
ef @ auth.js:77
./node_modules/@firebase/auth/dist/auth.js.h.fc @ auth.js:75
./node_modules/@firebase/auth/dist/auth.js.h.zb @ auth.js:75
XMLHttpRequest.send (async)
(anonymous) @ VM7143:1
Ye @ auth.js:73
./node_modules/@firebase/auth/dist/auth.js.Ch.m @ auth.js:138
Kh @ auth.js:137
(anonymous) @ auth.js:142
z @ auth.js:19
Qh @ auth.js:142
(anonymous) @ auth.js:153
e.g @ auth.js:23
Yb @ auth.js:26
Ub @ auth.js:26
./node_modules/@firebase/auth/dist/auth.js.h.Mb @ auth.js:25
Cb @ auth.js:19
Promise resolved (async)
zb @ auth.js:18
yb @ auth.js:18
Vb @ auth.js:25
Eb @ auth.js:24
A @ auth.js:20
./node_modules/@firebase/auth/dist/auth.js.h.get @ auth.js:181
./node_modules/@firebase/auth/dist/auth.js.pj.get @ auth.js:184
ml @ auth.js:240
ll @ auth.js:239
ul @ auth.js:242
(anonymous) @ auth.js:286
./node_modules/@firebase/app/dist/esm/src/firebaseApp.js.FirebaseAppImpl._getService @ firebaseApp.js:116
FirebaseAppImpl.(anonymous function) @ firebaseApp.js:303
(anonymous) @ auth.js:286
(anonymous) @ firebaseApp.js:323
callAppHooks @ firebaseApp.js:316
initializeApp @ firebaseApp.js:247
./src/redux/factory.js @ factory.js:49
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/components/AppMenu.js @ Utils.js:170
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/App.js @ fetch.js:461
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
./src/index.js @ Start.js:50
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
fn @ bootstrap 6a68f7b55db27319f480:88
0 @ index.css?b74f:26
__webpack_require__ @ bootstrap 6a68f7b55db27319f480:678
./node_modules/@firebase/app/dist/esm/index.js.Object.defineProperty.value @ bootstrap 6a68f7b55db27319f480:724
(anonymous) @ bundle.js:728
Run Code Online (Sandbox Code Playgroud)

这是我的数据存储区安全规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
    match /dev/organizations/{orgId} {
        allow read;
      match /beacon-providers/{providerId} {
        // allow read, write: if auth.ordId = orgId
        // @TODO also check if user is an admin in the current org
        allow read, write: if orgId == 'incubation'
      }    
    }
    match /organizations/{orgId} {
      allow read, write: if orgId == 'incubation';
      match /beacon-providers {
        allow read, write;
        match /{providerId} {
                    //allow read: if resource.data.user_uid == request.auth.uid;
                    allow read,write;
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)