Firebase模拟器与真实世界的结果不匹配



为了方便阅读此问题,请参考以下URL:

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

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

without-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规则生效,我应该尝试什么

@FrankvanPuffelen在此处回答:

这两个问题都是因为您使用了两种不同的访问Firebase的方法:JavaScriptSDK和RESTneneneba API。虽然这两种方法可以一起使用,但您必须确保提供所需的信息。一般来说,如果你坚持使用一种从单个客户端访问Firebase的方式,你会有更轻松的体验。

最新更新