【问题标题】:Firebase - Missing or insufficient permissionsFirebase - 权限缺失或不足
【发布时间】:2019-10-24 06:58:17
【问题描述】:

我正在为我的项目使用 Firestore,它似乎有一些集合引用错误。

ERROR FirebaseError:权限缺失或不足。在新的 FirestoreError (localhost:4200/vendor.js:66703:28)

我过去曾使用过 Angular Firebase,看起来我正在做和上次一样的事情。

我的查询很简单,看起来像这样

public getUsers(): Observable<any> {
    return this.afs.collection('users').valueChanges();
  }

我没有对数据库规则进行任何更改

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

你知道为什么会一直这样吗?

【问题讨论】:

    标签: angular firebase google-cloud-firestore


    【解决方案1】:

    您可以将“假”更改为“真”。 它将允许在任何条件下对所有用户进行读/写访问 但绝不在生产中使用此规则集;它允许 任何人都可以覆盖您的整个数据库。

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

    【讨论】:

      【解决方案2】:

      如果您愿意将所有权限授予所有人,则需要更改数据库规则。 (不安全,仅推荐用于开发环境。)

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

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

      如果您只需要登录用户在数据库中读写。

      更多信息https://firebase.google.com/docs/firestore/security/get-started

      【讨论】:

        【解决方案3】:

        /databases/users 不可能是数据库中集合的路径,因为集合只能具有奇数个路径组件。您现在拥有的内容看起来像是文档参考。

        如果您有一个名为“users”的集合,那么集合引用如下所示:

        this.afs.collection('users')
        

        “数据库”不是该路径的一部分。这只是与安全规则一起使用。

        【讨论】:

        • 你是对的,但我也尝试了“用户”并不断收到同样的错误
        • 你确定这是完全相同的错误吗?您的安全规则也拒绝来自应用程序的所有访问。这会产生不同的信息。
        • ERROR FirebaseError:缺少权限或权限不足。在新的 FirestoreError (localhost:4200/vendor.js:66703:28) 这是现在的错误
        • 是的,这是一个不同的问题。正如我所说,您的安全规则拒绝所有访问。将 false 更改为 true,但请记住,这样可以让每个人都读取数据库的全部内容。
        【解决方案4】:

        正如上面的评论所说, 我已在数据库规则中将 false 更改为 true

        【讨论】:

        • 请记住,您的问题有两个问题。第一个是不正确的路径,它在您编辑之前在问题中创建了错误消息。然后是安全规则的问题。除非需要额外信息,否则预计您不会更改问题。否则会使有用的答案无效。
        猜你喜欢
        • 2020-10-14
        • 1970-01-01
        • 2018-09-12
        • 2018-03-17
        • 2020-09-25
        • 2022-01-15
        • 2020-10-01
        相关资源
        最近更新 更多