带地图的Firebase Cloud Firestore安全规则

威廉·凯基吉

我对Cloud Firestore的安全规则有了解的问题。我不明白如何使用地图来检查用户的uid,以便他们可以访问其数据。

预先感谢您的回答

在此处输入图片说明 这是我尝试过的规则

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

    //TEST ONLY
    //match /{document=**} {
    //  allow read, write;
    //}
    
    // match logged in user doc in users collection
    match /users/users/{userId} {
      allow create : if request.auth.uid != null;
      allow read : if request.auth.uid == userId;
      
      match /{anything=**} {
        allow read, write : if request.auth.uid == userId;
      }
    }
  }
}

这是我如何使用Firestore的一个示例:

// Collection reference
final CollectionReference _usersCollection = Firestore.instance.collection('users');

Stream<List<double>> get existingRecord {
  return _usersCollection.document('users').snapshots()
    .map(_existingRecordListFormSnapshot);
}

List<double> _existingRecordListFormSnapshot(DocumentSnapshot snapshot) {
  ...
  double tips = snapshot.data['$uid']['data']['$year']['$month']['$week']['$day']['Tips'];
}

我的问题是我只希望用户有权访问其数据。为此,我制作了一个“用户”文档,其中包含一个“用户”映射,其中包含所有用户数据,并以其唯一的uid命名。而且我无法设置安全规则,因此只有用户才能访问其数据。

该图如下所示:users / users / [{userID},{userID},...]

我不知道我是否清楚,但是我真的找不到如何只允许用户访问用户数据映射中的数据

奥立佛

不要将所有用户放在同一个文档中,而是每个用户应该有一个文档(对于更简单的规则,该文档的名称等于Firestore uid)。

那么您的规则可以简单地是:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {   
    // match logged in user doc in users collection
    match /users/{userId} {
      allow create : if request.auth.uid != null;
      allow read : if request.auth.uid == userId;
      
      match /{anything=**} {
        allow read, write : if request.auth.uid == userId;
      }
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Cloud Firestore安全规则仅允许从Firebase功能写入

Firebase Cloud Firestore数据库的基本安全规则有不安全的规则

如何使用 Firebase 身份验证设置 Firebase Cloud Firestore 安全规则

如何在 Firebase Functions 中考虑 Google Cloud Firestore 安全规则?

Firebase Flutter:Cloud Firestore 数据库有不安全的规则

Firebase FireStore复杂的安全规则

用于阵列操作的Cloud Firestore安全规则

基本Cloud Firestore安全规则设置

如何限制Cloud Firestore安全规则

带安全规则的Firestore where子句

地图中未知密钥的Firestore安全规则

基于地图值的Firestore安全规则

Firebase 存储安全规则和 Firestore

Firebase:用于生产的 Firestore 安全规则

Cloud Firestore安全规则中的MapDiff是什么?

如何在安全规则中测试Cloud Firestore字段的类型?

Cloud Firestore:基于身份验证设置安全规则

Cloud Firestore安全规则“如果存在”不起作用

尝试使用 request.path 设置 Cloud Firestore 安全规则

Cloud Firestore安全规则-文档中的单个受保护字段

Cloud Firestore安全规则使用的语言名称是什么?

Cloud Firestore安全规则:如何检查属性是否存在?

Cloud Firestore安全规则-在列表请求中获取父文档

带通配符的Firebase安全规则

Cloud Storage split() 示例错误的 Firebase 安全规则

Firebase / Cloud Firestore / 规则设置(读取、写入、更新、删除)

Cloud Firestore的Firebase规则以限制最大文档数

使用规则在Firebase Cloud Firestore中禁用查询集合

Firebase Cloud Firestore数据库规则数据访问被拒绝