具有自己集合的用户的 Firestore 安全规则

Firestore Security Rule for users with their own collection

当用户只能读取和写入他们自己的集合(即集合名称与 userId 相同)时,最好的 Firestore 规则是什么?目前我有以下有效的方法,但它是否足够安全?

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

我也尝试了以下方法,但没有用。

rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{userId}/{document=**} {
            allow read, write: if request.auth.uid == userId;
        }
      }
    }

第一条规则确实不够,因为没有检查集合名称:任何经过身份验证的用户都可以读取以任何用户的 uid 命名的所有集合。

第二个应该符合您的要求(“用户应该只能读写他们自己的集合,即集合名称与 userId 相同”)。您可能在其他地方遇到错误,例如带有用于写入或读取或用于验证用户的代码。您应该分享此代码,以便我们仔细检查