首页 > 解决方案 > 在 Firestore 中触发权限

问题描述

我已经能够为我的 Firestore 数据库设置权限,规则背后的逻辑是限制用户通过身份验证并属于特定域

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if isUserAndSignedIn();
    }
  }

  function isUserAndSignedIn(){
    return request.auth != null && request.auth.token.email.matches('.*@domain[.]com')
  }
}

该规则按预期适用于 CRUD 操作,但不适用于触发器,在我的情况下,执行触发器时出现以下错误(云功能):

FirebaseError: Missing or insufficient permissions.
    at new FirestoreError (/srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:348:28)
    at JsonProtoSerializer.fromRpcStatus (/srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:5385:16)
    at JsonProtoSerializer.fromWatchChange (/srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:5883:44)
    at PersistentListenStream.onMessage (/srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:14779:43)
    at /srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:14708:30
    at /srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:14748:28
    at /srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:10612:20
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:228:7)

任何想法如何在规则中解决这个问题?如何绕过数据库规则执行中的触发器?

标签: google-cloud-firestoregoogle-cloud-functions

解决方案


推荐阅读