针对数据库的 Firebase 身份验证规则



我必须在Firebase数据库中实施一条规则,以防止未经授权的访问(读取,写入(。
在我的数据库中,我有一个单词集合。每个单词都有一个"uid"字段,对应于本地存储中 authUser 密钥的 uid。

在我对Firebase的REST调用中,我传递了参数uid:

const urlByUser = 'orderBy="uid"&equalTo="'+uid+'"';

我在Firebase db中实现了以下".read"规则,但它不起作用(我获得了未定时的访问权限;当然,我也将访问令牌作为URL中的参数传递(:

{
  "rules": {
      "words": {
      ".indexOn": ["uid"],
      "$uid": {
        ".read": "$uid == auth.uid"
      }
    }
  }
}

规则有问题吗?
谢谢

默认情况下,对某个位置的查询要求您具有对该整个位置的读取访问权限。这意味着规则本身不能用于筛选数据。

但是,您可以做的(最近添加的(是编写规则,以确定某个位置允许哪些查询。在您的情况下,这意味着您允许从/words读取,但前提是他们按auth.uid查询过滤。因此,你将有一个规则,该规则允许正确筛选的查询,但拒绝未筛选(或错误筛选(的侦听器。

如需详细了解该功能,请参阅 Firebase 文档和 Firebase 博客中的基于查询的安全规则简介。从那里修改:

{
  "rules": {
     "words": {
        ".read": "auth.uid != null &&
                  query.orderByChild == 'uid' &&
                  query.equalTo == auth.uid"
     }
  }
}

最新更新