【问题标题】:How to access parent auth status in array如何访问数组中的父身份验证状态
【发布时间】:2019-02-03 19:09:10
【问题描述】:

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

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

如您所见,我正在尝试从“演示”中访问帐户/$uid/,它似乎不起作用,我缺少什么/我需要更改什么?

非常感谢

更新

有问题的代码不起作用:

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

我似乎无法访问这部分。好像没有获取到当前用户的认证状态。

更新

关于我尝试使用预定义变量的截图,请参见附件。我只是想获取身份验证状态,但我收到一个错误,说它是未定义的?

【问题讨论】:

  • 您能否编辑您的问题以包含不违反这些规则的代码?
  • @FrankvanPuffelen 绝对,刚刚更新
  • 我不是这个意思。你说“它似乎不起作用”,我想看看 what “它”在这里。很可能是您的应用程序中的一些代码。
  • 好像获取不到当前用户的认证状态
  • 如果您在用户通过身份验证之前附加侦听器,可能会发生这种情况。但是如果没有看到minimal code that reproduces the problem,就很难确定。

标签: firebase firebase-realtime-database firebase-authentication firebase-security


【解决方案1】:

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

"website-quotes": {
  ".read": "root.child('accounts').child(auth.uid).exists()"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2023-03-08
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多