【发布时间】:2020-10-16 10:49:28
【问题描述】:
我有一个问题,我在各种网站或论坛上找到了信息,但找不到适合我的解决方案。
我在 firebase 中有这个实时数据库结构:
我想应用安全规则。 应用以下规则,只有经过正确身份验证的用户才能获取信息。
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
到目前为止,一切正常。从逻辑上讲,它表示任何经过身份验证的用户都可以访问任何信息
现在我希望经过身份验证的用户只能访问他们的节点。
根据我找到的信息,使用这些规则应该很容易:
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
但是,我总是得到错误:
W / SyncTree: Listen at / failed: DatabaseError: Permission denied
这是由 android 代码建立的连接:
database.addListenerForSingleValueEvent(object :
ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
val path = dataSnapshot.child(App.res.getString(R.string.word_user))
.child(prefs.user_id.toString()).child("expenses").children
for (snapshot in path) {
...
我不明白问题出在哪里。
我知道请求是针对“费用”字段的,但是包含在“用户”字段中,我想应该没有问题。
正如我所说,我已经阅读了很多关于它的内容,但我无法让它发挥作用。
提前致谢
【问题讨论】:
标签: android firebase firebase-realtime-database firebase-security