javascript - Firebase 权限

标签 javascript firebase firebase-realtime-database firebase-authentication firebase-security

我有这个结构的数据库:

public: {
  UID_1: { ... }, UID_2: { ... }, ...
}
users : {
  UID_1: { ... }, UID_2: { ... }, ...
}

而且我想设置权限,只允许适当的用户(uid 所有者)读/写“用户”,并允许每个人读取“public”,并为适当的用户(uid 所有者)写入。 现在我有

    {
    "rules": {
      "users": {
        "$uid": {
          ".read": "auth.uid === $uid",
          ".write": "auth.uid === $uid",
        },
      },
      "public": {
         "$uid": {
           ".read": "auth.uid !== null",
           ".write": "auth.uid === $uid",
         }
       }
    }
   }

但是当我试图列出来自“公共(public)”的所有职位时 this.db.child('public').once('value', snapshot => { ... } 它找不到任何值(value)。当我将整个“公共(public)”读/写设置为 true 时,它​​就起作用了。 直觉在这里不起作用

最佳答案

目前没有人对/public 有读权限,但是每个登录用户都对它下面的每个节点有读权限。要能够从某个位置读取,您需要在该位置 的读取权限。

因此,要解决此问题,请将 /public 中的 .read 规则上移一层:

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

关于javascript - Firebase 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206060/

相关文章:

php - 来自 PHP Chunked Response 的 HTML5 视频标签,可能吗?

android - 如何使用 Firebase 分析跟踪 android fragment

firebase - Firebase 控制台中不存在下载 URL

java - 这是否可能只显示实时 Firebase 数据库的某些特定子值的 ListView

javascript - 如何在 React Native 中拥有多个带有过滤数据的 Flatlist

ios - Firebase 和 UISearchbarController 通过服务器而不是客户端搜索 -Swift iOS

Javascript - 函数声明之间的区别

javascript - angularjs - 级联选择使用第一个选择中的模型数据

javascript - jQuery `.parent().remove()` 不工作

encryption - 如何在 Firebase 中加密用户数据