【问题标题】:Firebase security rules like this?像这样的 Firebase 安全规则?
【发布时间】:2020-01-24 11:03:53
【问题描述】:

我有一个收藏,可以说它叫做 rooms。 在房间里,我有它的名称、散列密码、“成员”、子集合,看起来像这样:

rooms: {
  room1Uid: {
    name: "room name",
    password: "hashed password",
    members: {
      member1Uid: { joindate: "timestamp"},
      member2Uid: { joindate: "timestamp"},
      ...
    },
    resource1: {
      something: "...",
    },
    resource2: {
      something: "...",
    }
  },

  room2Uid: {...}
}

我希望只有经过身份验证的用户才能读取和写入 roomUid 下包含在成员列表中的任何内容。

因此,例如 request.auth.uid == member1Uid 可以从 room1Uid 下读取 resource1

【问题讨论】:

  • 是实时数据库吗?
  • 它是 firestore
  • 您使用的是哪种认证方式? (电子邮件和密码,匿名...)
  • signInWithEmailAndPassword() 用于用户身份验证。但我想过滤可以访问房间资源的用户。
  • 请查看答案

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


【解决方案1】:

使用exists(),下面给出一个示例代码

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    match /rooms/room1Uid/{document=**} {

      allow read, write: if exists(/databases/$(database)/documents/rooms/room1Uid/members/$(request.auth.uid))

    }
  }
}

试试这个,让我知道它是否有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2016-08-19
    • 2020-09-06
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多