【发布时间】:2017-03-07 11:10:43
【问题描述】:
我只想向已在用户列表中拥有电子邮件地址的经过身份验证的用户授予写入权限。
我的用户列表如下所示:
{
"users" : {
"-KeZg-MuD-4TEOiW9i0_" : {
"email" : "example@gmail.com"
}
}
}
我尝试过使用这样的规则:
"users": {
".write" : "root.child('users/email').val() === auth.token.email"
}
"users": {
".write" : "root.child('users.email').val() === auth.token.email"
}
"users": {
".write" : "root.child('users.email').child(auth.token.email).exists()"
}
"users": {
".write" : "root.child('users').child(auth.token.email).exists()"
}
但无济于事。当我尝试像这样添加新用户时,我仍然收到权限被拒绝错误:
firebase.database().ref('users').push({email: 'example@gmail.com'})
我上面的 sn-ps 使用 example@gmail.com 而不是实际的 google 身份验证用户的电子邮件地址,但实际用户存在于我的用户数据库列表中。
【问题讨论】:
-
您能否给出一个代码示例,说明您尝试过的事情并没有达到您的预期?
-
我正在添加类似于我添加的示例的用户。之后我收到一个权限被拒绝错误。
-
我无法充分利用您共享的代码。您可以将您的实际 JSON(因为您的规则正在检查
root)作为文本分享吗?您可以通过单击 Firebase Database console 中的导出 JSON 来获取此信息 -
这是我的数据库的导出:pastebin.com/1KE20xz7
-
我希望只允许通过电子邮件 example@gmail.com 进行 google 身份验证的用户具有写入权限
标签: firebase firebase-realtime-database firebase-authentication firebase-security