【发布时间】:2021-01-05 21:19:33
【问题描述】:
我尝试验证用户在“喜欢”字段中输入的值是否为零:
request.resource.data.likes.size() == 0
规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /posts/{post}
{
allow read :if request.auth != null;
allow create : if request.auth.token.firebase.sign_in_provider != 'anonymous'
&& request.resource.data.uid == request.auth.uid
&& request.resource.data.size() == 8
&& request.resource.data.hasOnly(['withPhoto','uid', 'text', 'tags','imageUrl', 'imageThump', 'comments', 'likes'])
&& request.resource.data.likes.size() == 0;
}
}
}
但是当我通过应用程序尝试它时,它给了我以下错误:
[cloud_firestore/permission-denied] 调用者无权执行指定操作。
当我删除request.resource.data.likes.size() == 0 行时,它起作用了。
这段代码描述了我如何添加 poss:
Set<String> tags = _getTags(postText.toString().split(' '));
FirebaseFirestore firestore = FirebaseFirestore.instance;
await firestore.doc("posts/" + uuid).set({
"uid" : uid,
"likes":{},
"comments":{},
"tags": tags.toList(),
"text": postText,
"imageUrl": imageUrl,
"imageThump": imageThumpUrl,
"withPhoto": withPhoto
});
【问题讨论】:
标签: flutter google-cloud-firestore firebase-security