Firebase简单用户身份验证规则
我刚从Firebase开始 我正在使用一个quickstart js模板 我正在尝试添加一个.read安全规则,以便用户只能阅读用户创建的帖子 我有点困惑,因为如果我根据Firebase简单用户身份验证规则,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我刚从Firebase开始 我正在使用一个quickstart js模板 我正在尝试添加一个.read安全规则,以便用户只能阅读用户创建的帖子 我有点困惑,因为如果我根据auth.id进行测试,规则是通过的,但是如果我根据auth.uid进行测试,规则是失败的(我知道auth.uid是正确的) 在模拟器中,此规则失败: { "rules": { // ".read": "auth != null", ".write": "auth != null", "post
auth.id
进行测试,规则是通过的,但是如果我根据auth.uid
进行测试,规则是失败的(我知道auth.uid是正确的)
在模拟器中,此规则失败:
{
"rules": {
// ".read": "auth != null",
".write": "auth != null",
"posts": {
"$post": {
".read": "data.child('uid').val() === auth.uid",
}
}
}
}
以下是数据库结构:
{
"posts" : {
"-KL6ecPO67H5B8SmPHJr" : {
"body" : "Just testing out the firebase system.",
"starCount" : 0,
"title" : "Camp Se has it's first blog post",
"uid" : "vaZrC0sSdYTiou587IuePVw9uRT2"
},
"-KL6fUBOhsc4zosJbwjb" : {
"body" : "Another post ja ja ja\n",
"starCount" : 0,
"title" : "Another post",
"uid" : "vaZrC0sSdYTiou587IuePVw9uRT2"
}
},
"user-posts" : {
"vaZrC0sSdYTiou587IuePVw9uRT2" : {
"-KL6ecPO67H5B8SmPHJr" : {
"body" : "Just testing out the firebase system.",
"starCount" : 0,
"title" : "Camp Se has it's first blog post",
"uid" : "vaZrC0sSdYTiou587IuePVw9uRT2"
},
"-KL6fUBOhsc4zosJbwjb" : {
"body" : "Another post ja ja ja\n",
"starCount" : 0,
"title" : "Another post",
"uid" : "vaZrC0sSdYTiou587IuePVw9uRT2"
}
}
},
"users" : {
"vaZrC0sSdYTiou587IuePVw9uRT2" : {
"email" : "user@gmail.com"
}
}
}
模拟结果详细信息:
Simulation results
Type read
Location /posts/KL6ecPO67H5B8SmPHJr/
Data null
Auth { "provider": "google", "uid": "vaZrC0sSdYTiou587IuePVw9uRT2" }
Admin false
edit Read denied
close
Line 7 (/posts/KL6ecPO67H5B8SmPHJr)
read: "data.child('uid').val() === auth.uid"
我的模拟器“位置”字段出错。当我从数据库复制帖子id时,我遗漏了前面的
-
字符
我解决了这个问题,规则也起作用了:-)我的模拟器“位置”字段出错。当我从数据库复制帖子id时,我遗漏了前面的
-
字符
我解决了这个问题,规则也起作用了:-)您的问题中包含了JSON树的图片。请将其替换为实际的JSON作为文本,您可以通过单击Firebase数据库控制台中的导出按钮轻松获得该文本。将JSON作为文本使其具有可搜索性,允许我们轻松地使用它来测试您的实际数据,并在我们的答案中使用它,这通常是一件好事(tm)。当您打开错误消息的详细信息时,它会说些什么。作为文本也比作为屏幕截图更有用。请将其替换为实际的JSON作为文本,您可以通过单击Firebase数据库控制台中的导出按钮轻松获得该文本。将JSON作为文本使其具有可搜索性,允许我们轻松地使用它来测试您的实际数据,并在我们的答案中使用它,这通常是一件好事(tm)。当您打开错误消息的详细信息时,它会说些什么。作为文本也比作为截图更有用。很高兴听到蒂姆。我将投票以打字错误结束你的问题,因为犯同样错误的人不太可能发现它(因为他们不知道问题的原因)。很高兴听到蒂姆。我将投票以打字错误结束你的问题,因为犯同样错误的人不太可能发现它(因为他们不知道问题的原因)。