GeoFire - 如何设置安全规则,使 geofire 位置只能写入 auth 用户?

GeoFire - How to set security rule such that the geofire location is only writeable to the auth user?

所以我有一个如下图所示的geofire数据结构。我的每个 geofire 位置都代表拍摄照片的位置。所以红色圈出的唯一键就是一张照片对应的键,保存在我数据库的一个单独的分支中。

我现在卡住了,因为我不确定如何设置我的安全规则只允许在以下情况下写入:"the authenticated user equals to the user that the photo belongs to"。

注意:我无法执行以下操作,

image_location
 -public
  -user id
   -picture id
     - g: 
     - l:
        -0:
        -1:

因为我需要把所有的图片位置都保存在1个分支下,这样图片就可以被所有用户直接查询了,这样:

ref = FirebaseDatabase.getInstance().getReference()
.child(image_location)
.child(public);
GeoFire geoFire = new GeoFire(ref);

提前谢谢大家!

Understand Firebase Realtime Database Rules。这是如何做到这一点。特别是写规则。 ...在您的情况下,分支不会是 db("users"),而是您命名的任何名称...

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

Java脚本的 Geofire 将位置与键相关联。除了这两位信息之外,它不会在该位置保留其他属性。

这意味着根据当前用户执行某些操作的唯一方法是使用该用户的 UID 作为键。您可以通过以下方式确保它:

"image_locations": {
  "$uid": {
    ".write": "auth.uid === $uid"
  }
}

由于您想允许多张照片,因此这是不可能的。 Java 的 GeoFire 最近添加了向地理位置添加更多数据(例如您需要 UID)的功能,但这还没有在 JavaScript 库中实现。