【问题标题】:FirebaseError: Missing or insufficient permissions. with getDocs()FirebaseError:权限缺失或不足。使用 getDocs()
【发布时间】:2022-08-06 21:13:10
【问题描述】:

我尝试阅读前几个答案,但似乎没有一个与我目前掌握的答案具有相同的规则。

当我尝试调用 getDocs() 函数时(使用反应)

let userInfo = await getDoc(doc(db, chargerInfo.userRef));

我似乎收到了错误FirebaseError: Missing or insufficient permissions. 我该怎么做才能不出现此错误?以下是我的规则

match /devices/{id} {
        allow read: if request.auth != null;
        allow update: if request.auth != null;
    }
    ```
  • 您确定用户在查询之前已登录吗?您可以尝试记录用户信息以确保这一点吗? \"db\" 在哪里定义?
  • @Dharmaraj 我从 const db = getFirestore(); 获取 db(getFirestore() 是从 firebase/firestore 导入的)
  • 您是否尝试获取单个文档(因为您的问题是 getDocs())?在这种情况下,您可以登录chargerInfo.userRef 并分享它的价值截图吗?
  • @DharmarajchargerInfo.userRef 记录设备/TEST-0031。 auth.currentUser.uid 也会记录正确的用户 ID
  • chargerInfo.userRef 来自哪里?它是文档参考类型字段吗?如果是,那么您可以直接使用getDoc(chargerInfo.userRef)。您是否还尝试在查询之前记录用户 UID 以确保用户已登录?

标签: javascript firebase google-cloud-firestore firebase-security


【解决方案1】:

您可以更改为:

 ...
 allow read: if true;
 allow update: if true;
 ...

【讨论】:

  • 可悲的是,我不能这样做,因为他们希望它有这些规则
  • 如果您希望request.auth 不为空,则需要使用 Firebase 身份验证来对用户进行身份验证。
  • 谢谢你的回答。它最终成为了他们在火力基地上的规则。会接受这个答案,因为这是我现在测试我的代码的唯一方法。
【解决方案2】:

在 Cloud Firestore 中的应用程序中,转到规则并用以下行替换“允许读写...等”语句:

允许读、写:如果 request.time > timestamp.date(2020, 9, 10);

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 2019-10-23
    • 2021-12-01
    • 2022-01-15
    • 2021-11-12
    • 2022-01-25
    • 2021-10-31
    • 1970-01-01
    • 2020-07-15
    相关资源
    最近更新 更多