具有自己集合的用户的 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 相同”)。您可能在其他地方遇到错误,例如带有用于写入或读取或用于验证用户的代码。您应该分享此代码,以便我们仔细检查
当用户只能读取和写入他们自己的集合(即集合名称与 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 相同”)。您可能在其他地方遇到错误,例如带有用于写入或读取或用于验证用户的代码。您应该分享此代码,以便我们仔细检查