所以我正在Firebase中为我的数据库编写规则。而且我正试图允许某人仅删除自己的帖子。但是当我测试它时,任何人都可以删除任何人的帖子。
我尝试编写是否request.auth.uid == resource.data.User.uid,但它不起作用
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /posts/{postId}{
allow delete: if request.auth.uid==resource.data.User.uid
allow read;
allow write,update: if request.auth.uid!=null;
}
}
}
我尝试通过将其更改为
来进一步简化它rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /posts/{postId}{
allow delete: if request.auth.uid==1
allow read;
allow write,update: if request.auth.uid!=null;
}
}
}
但是仍然任何人都可以删除任何人的帖子。显然没有人将uid设为1。
这是我的帖子集
Content "Hello"
Title "Hey"
User
displayName "Vikram Singh Bedi"
email "vikrambedi_bt2k16@dtu.ac.in"
uid "dCQvboYvffQ1kOqkMqgs2txNKvo1"
comments 0
createdAt 8 September 2019 at 14:10:31 UTC+5:30
favorites 0
我只希望创建帖子的人能够删除它。
这是删除帖子的代码
<button
className="delete"
onClick={() => {
firestore.doc(`posts/${id}`).delete();
}}
>
答案 0 :(得分:0)
您如何发送删除请求?
例如,如果您使用Admin SDK进行删除,则Admin SDK将绕过规则。
答案 1 :(得分:0)
为fun backhome(home: View) {
val intent_home = Intent(this, MainActivity::class.java)
startActivity(intent_home)
}
操作授予权限时,这将为所有write
,create
和update
操作授予权限。
您正在将粒度delete
规则与非粒度write
和delete
规则组合在一起,我怀疑这意味着非粒度update
规则会胜出(因为他们只是或在一起)。
如果是这种情况,请仅使用非粒度写入规则:
write