gpt4 book ai didi

javascript - Firebase - 如何在不显示用户 ID 的情况下正确设置写入权限?

转载 作者:行者123 更新时间:2023-12-03 03:45:15 26 4
gpt4 key购买 nike

我有以下数据结构:

cars: {
  $uid: {
     brand: "Brand here",
     model: "Model here etc"
   },
   $uid: {
     brand: "Another brand here",
     model: "Another model here etc"
   }
}

任何人都可以读取此数据,例如:firebase.com/cars/uniqueIDHere.json - 它是一个公共(public) APIfirebase.com/cars.json - 无法访问。

现在的规则是这样设置的:

"cars": {
      "$uid": {
        ".read": "true",
        ".write": "auth != null"
    }
}  

我想要以下授权规则:只有创建“汽车”的用户才能编辑/删除它。根据现在的规则,我认为所有登录的用户都可以这样做(如果他们知道汽车的 $uid)。可以制定哪些规则,以便只有所有者才能“写入”。我知道这样的规则:

"$uid": {
   ".read": "true",
   ".write": "auth.uid === $uid"
}

其中 $uid 是用户的 uid,但我不希望这样,因为它将在公共(public) API url 中公开我可以采取什么方法?有什么想法吗?

最佳答案

我认为你需要将用户汽车分开。

这样的结构:

root
|
+-- cars
| |
| +-- $carId
| |
| +-- brand: $brand
| |
| +-- model: $model
|
+-- users
| |
| +-- $userId
| |
| +-- cars
| |
| +-- $carId: true

规则如下:

{
"rules": {
"cars": {
"$carId": {
".read": "true",
".write": "auth != null && root.child('users').child(auth.uid).child("cars").child($carId).val() === true"
}
},
"users": {
"$userId": {
".read": "auth != null && auth.uid === $userId",
".write": "auth != null && auth.uid === $userId"
}
}
}
}

关于javascript - Firebase - 如何在不显示用户 ID 的情况下正确设置写入权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45419069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com