我的Firestore数据库中有以下规则。但我仍然不断收到Firestore的通知,说我在数据库中设置的规则不安全。请参阅下面的代码。有什么建议或建议可以使数据库更安全吗?
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if true;
allow write: if userIsAdmin();
}
match /Basket/{Basket} {
allow read, update, delete: if userOwnPost();
allow create: if request.auth.uid != null;
}
match /AllOrders/{AllOrders} {
allow read, create, update: if userOwnPost();
}
match /Items/{Items} {
allow update: if userOwnPost();
}
match /Voucher/{Voucher} {
allow update: if userOwnPost();
}
match /User/{User} {
allow read, update: if userOwnPost();
allow create: if request.auth.uid != null;
}
function userIsAdmin() {
return getUserData().userRole == 'Admin';
}
function getUserData() {
return get(/databases/$(database)/documents/User/$(request.auth.uid)).data;
}
function userOwnPost() {
return getUserData().objectId == request.auth.uid;
}
}
}
1条答案
按热度按时间wnvonmuf1#
您的规则中有一些重叠的match语句:
与
您允许对Firestore数据库中的所有文档进行读访问。
如文档(“重叠匹配语句”一节)中所述,“在多个allow表达式匹配请求的情况下,如果任何条件为真,则允许访问”。
所以你其他的安全规则都和这条重叠了。