如何在数组中访问父身份验证状态

问题描述 投票:0回答:1

我不确定这个标题是否合适,因为我是Firebase身份验证和规则的新手,但是,我已成功设置身份验证,现在我正在尝试保护特定路由,但似乎无法访问相关数据,这是我的实时数据库中的Firebase规则:

{
  "rules": {
    "accounts": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    },
    "demo": {
      ".read": "accounts.$uid === auth.uid",
      ".write": true
    }
  }
}

正如你所看到的,我正试图从“demo”中访问accounts / $ uid /,它似乎不起作用,我缺少什么/我需要更改什么?

非常感谢

UPDATE

有问题的代码不起作用:

".read": "accounts.$uid === auth.uid"

我似乎无法访问这部分。它似乎没有获得当前用户的身份验证状态。

UPDATE

有关使用预定义变量的尝试,请参阅附带的屏幕截图。我只是试图获得auth状态,我收到一个错误,说它未定义?

enter image description here

firebase firebase-realtime-database firebase-authentication firebase-security-rules
1个回答
0
投票

尝试访问数据的当前用户的UID在auth.uid中可用。如果您试图确保只有当用户在accounts节点中有文档时才允许读取引号,那么您正在寻找exists()

"website-quotes": {
  ".read": "root.child('accounts').child(auth.uid).exists()"
}
© www.soinside.com 2019 - 2024. All rights reserved.