我正在为Firebase上的一个微博客网站编写代码,这是我的新手。我正在存储用户信息(例如简介,个人资料图片),并按照以下结构发布用户的帖子:
{
"posts" : {
"postid" : {
"category": "xx",
"content": "xx",
"uid":"xx"
}
},
"users" : {
"uid" : {
"intro" : "xx",
"nickname" : "xx",
"profile_picture" : "xx"
}
}
}
我想制定以下规则:
任何登录的用户都可以发布,但之后只能编辑自己的帖子
对于用户信息,他们只能发布/编辑自己的信息。
我设置数据库安全规则如下。
"users": {
".read": true,
"$uid": {
".write": "auth.uid===$uid"
},
},
"posts": {
".read": true,
".write": "auth!==null",
},
这里有几个问题:
a。该规则将使任何不良用户可以编辑非他/她自己的其他任何帖子。
b。尝试写入用户节点时,当前没有现有的UID子节点,并且拒绝用户写入权限。
如何更改数据库规则来解决这两个问题?我更喜欢这样做,而无需重写前端代码或更改数据库结构...希望在这里寻求一些建议!
答案 0 :(得分:0)
要仅允许用户写自己的帖子(或使用自己的UID创建新帖子),可以在写操作中检查uid
字段的值:
"posts": {
".read": true,
".write": "auth !== null && auth.uid === newData.child('uid').val",
},