火力地堡实时数据库私人共享数据与电子邮件?(Firebase Realtime Database P

2019-10-29 07:01发布

我想用户之间共享安全数据。

"shared_requests" : {
    "shared_uid" : {
      "deviceSeriNo" : "device1serino",
      "user1" : {
        "email" : "john@john.com",
        "userName" : "John"
      },
      "user2" : {
        "email" : "micheal@micheal.com",
        "userName" : "Micheal"
      }
    }
  }

规则:(编辑,我忘了写一小部分(auth.uid.email.replace( '@', ' ').replace(' '''))。)

"shared_requests": {
        "$key": {
          ".read": "root.child('shared_requests').child($key).child('user1/email').val() == auth.uid.email.replace('@','_').replace('.','_') || root.child('shared_requests').child($key).child('user2/email').val() == auth.uid.email.replace('@','_').replace('.','_')",
          ".write": "root.child('shared_requests').child($key).child('user1/email').val() == auth.uid.email.replace('@','_').replace('.','_') || root.child('shared_requests').child($key).child('user2/email').val() == auth.uid.email.replace('@','_').replace('.','_')"
        }
      }

但不工作。 我怎么解决这个问题?

编辑:

它的工作原理,当我尝试用UID。

"shared_req4": {
            "shared_uid": {
            "$key": {
              ".read":  "auth != null && auth.uid === $key",
                    ".write":  "auth != null && auth.uid === $key"
            }
          }
        }

数据:

模拟器:

仿真结果:

但是,当我尝试它通过电子邮件不起作用。

"shared_req3": {
            "shared_uid": {
            "$key": {
              ".read":  "auth != null && auth.uid.email.replace('@','_').replace('.','_') === $key",
                    ".write":  "auth != null && auth.uid === $key"
            }
          }
      }

数据:

模拟器:

仿真结果:

Answer 1:

问题就解决了。

它不会在模拟器上工作,所以试穿代码。 而它需要的不是“auth.uid.email” auth.token.email“。

@FrankvanPuffelen谢谢你这么多。



文章来源: Firebase Realtime Database Private Shared Data With E-Mail?