Firebase 当只有经过身份验证的用户才能读取文档时,如何检查文档是否作为未经身份验证的用户存在于集合中

Firebase 当只有经过身份验证的用户才能读取文档时,如何检查文档是否作为未经身份验证的用户存在于集合中,firebase,google-cloud-firestore,firebase-authentication,firebase-security,Firebase,Google Cloud Firestore,Firebase Authentication,Firebase Security,我有一个用户集合,每个文档的id都是用户的电子邮件。 当用户登录时,我想检查用户集合中是否有一个文档已经包含此电子邮件作为文档id(如果用户确实已注册) 我使用firebase firestore,并且我有只允许经过身份验证的用户读取文档数据的安全规则 我对该集合的规则如下: match /collection/{docId} { allow read: if request.auth != null; ... } 登录页面中的代码: firebase.fire

我有一个用户集合,每个文档的id都是用户的电子邮件。 当用户登录时,我想检查用户集合中是否有一个文档已经包含此电子邮件作为文档id(如果用户确实已注册)

我使用firebase firestore,并且我有只允许经过身份验证的用户读取文档数据的安全规则

我对该集合的规则如下:

match /collection/{docId} {
      allow read: if request.auth != null;
      ...
    }
登录页面中的代码:

firebase.firestore().collection('collection').doc('docId').get()
        .then(doc => {
            if (doc.exists) {
                firebase.auth().signInWithEmailAndPassword(email, password);
            }
            else {
                this.setState({ error: 'user does not exist' });
            }
        })
        .catch(() => this.setState({ error: 'you don't have permission' }));
    }
当我运行此检查时,会出现错误“您没有权限”,但当我更改
allow read:if true
的规则时,它工作正常。
我只想检查文档是否存在。

没有检查文档是否存在的特殊权限。为了检查文档是否存在,客户机必须能够完全阅读文档,因此安全规则对您没有帮助


相反,您可以做的是单独收集未经身份验证的用户应该能够访问的数据,并将少量数据复制到这些文档中,以使您的功能正常工作。然后,您的规则可以允许完全访问此其他集合。

没有检查文档是否存在的特殊权限。为了检查文档是否存在,客户机必须能够完全阅读文档,因此安全规则对您没有帮助

相反,您可以做的是单独收集未经身份验证的用户应该能够访问的数据,并将少量数据复制到这些文档中,以使您的功能正常工作。然后,您的规则可以允许完全访问此其他集合