【问题标题】:Firebase simulator does not match real-world resultsFirebase 模拟器与实际结果不符
【发布时间】:2016-03-21 22:46:25
【问题描述】:

为方便阅读本题,参考以下网址:

网址定义:
url1 = 'https://my-firebase.firebaseio.com/users/user-id/settings';
url2 = url1 + '.json';

我测试了两种不同的安全场景——有安全性和没有安全性。无论是在 Firebase 模拟器中还是在现实生活中。如下。

没有-security.json:
{
  "rules": {
    ".read": true,
    ".write": true
  }
}
with-security.json:
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid",
        "settings": {}
      }
    }
  }
}

现在,考虑一下 Firebase 模拟器与实际测试的不同结果。

测试结果:
      Security Simulator                         Real life
      -------- ---------                         ---------
url1  No       (untested)                        Fails (without error message)
url2  No       (untested)                        Success!
url1  Yes      Success!                          Fails (without error message)
url2  Yes      Invalid path. Simulation aborted. POST <url2> 401 (Unauthorized)

问题

  • 什么可能导致测试结果与现实生活中的这种差异?
  • 我应该尝试什么才能使现实生活中的场景在with-security.json 规则到位?

【问题讨论】:

  • 这还是你上一个问题的问题。发布您所做的确切操作。如果是写入,请发布您放入模拟器的 URL 和 JSON 以及您使用的代码。没有这些,我们猜测你在做什么。另请注意,模拟器解释了它是如何得出结果的。发布该输出。
  • @FrankvanPuffelen:感谢您提供有用的写作建议。受此评论的启发,I have rewritten this question in a separate post here。有很多细节,但读起来很快。再次感谢。
  • 不要为同一个问题打开一个新问题。到目前为止,这是您在上面发布的第三个问题,仍然很难弄清楚。老实说:这个问题更接近了,但是没有看到失败的写入操作的 minimal sn-p(您放入模拟器或代码中的 URL 和 JSON),这是不可能的看看发生了什么。我正在尝试从您的最新问题中挖掘出来,但您确实应该在此处添加该信息。

标签: firebase firebase-security


【解决方案1】:

@FrankvanPuffelen answers here:

这两个问题都是由于您使用两种不同的方式访问 Firebase 造成的:JavaScript SDK 和 REST API。虽然这两种方法可以一起使用,但您必须确保提供所需的信息。一般来说,如果您坚持使用从单个客户端访问 Firebase 的一种方式,您将获得更轻松的体验。

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多