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 库中实现。
所以我有一个如下图所示的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 库中实现。