【问题标题】:Accessing data path in firebase database [duplicate]访问firebase数据库中的数据路径[重复]
【发布时间】:2017-01-01 19:34:47
【问题描述】:

使用字符串 (jhgkjgl) 为您的 firebase 根数据库创建一个子节点,然后 当此路径等于字符串然后用户时从此路径检索数据 可以检索数据

这是限制和验证数据访问的好方法吗?

正如 narendra 先生在以下帖子的评论中所说: getting value from firebase database by authentication

帖子如下:

我的 android 应用程序有一个字符串,我想将它发送到 Firebase 用于身份验证的数据库。如果该字符串与“jhgkjgl”匹配,我想要 Firebase 将数据发送给我,否则不会发送任何内容。

我必须在我的 java 和 firebase 控制台中都写些什么?做什么 我需要做什么?

规则:

{ "rules":{ ".read":"auth.uid.matches(/jhgkjgl/)" } } 我想要的数据 进入我的应用程序:

q:"qqqweryty" 我的路径是:

https://fir-rial-8888.firebaseio.com/我只想用字符串 用于身份验证。如果我的应用程序中的字符串与服务器的字符串匹配,我 想要获取我的键“q”的值。

【问题讨论】:

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


【解决方案1】:

您可以为该节点使用占位符,而不是与静态值进行比较。

来自documentation 的规则示例。

如果您不想通过身份验证提供程序对用户进行身份验证,您可以使用anonymous authentication

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

【讨论】:

  • narendra 先生提供的解决方案也可以吗?他是说通过使字符串本身成为我节点的路径,所以当路径有效时,我得到了值,当它不是时,我没有。
  • 我的规则将是 "Rules":{"My string":{".read":true}}
  • 数据是:我的字符串:“qqqweryty”
  • 您可以公开您的数据库访问权限,然后只需提供节点名称即可获取数据。或者您可以尝试从控制台定义用户并在您的应用程序中对其进行静态身份验证,但这是不安全的。
  • 所以 narendra 先生的解决方案也是安全的..
猜你喜欢
  • 2017-09-24
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2017-01-16
相关资源
最近更新 更多