如果firebase中存在未经授权的文档id,则返回布尔值



到目前为止,我对firebase的请求仅限于经过身份验证的用户。

现在,我想检查firestoredb中是否存在一个给定id的文档,而该文档没有经过身份验证,并且我不想通过标准安全规则直接允许来使我的整个文档树可读。我唯一需要的就是对存在的肯定或否定。

可能是";存在";安全规则是实现这一点的最佳方法,或者有针对这种情况的最佳实践吗?

您所描述的内容可以通过在安全规则中使用细粒度操作来实现。这里的关键概念是,read规则可以分解为get(用于读取特定文档(和list操作(用于集合范围的读取和查询(。

在大多数默认规则中,您会发现读取操作如下:

match /yourCollection/{doc} {
allow read: if <condition>;

这允许任何用户读取或查询整个集合,只要它们符合条件即可。

如果你只想让用户能够阅读特定的文档,你可以使用get而不是阅读:

match /yourCollection/{doc} {
allow get : if <condition>;

现在,对整个集合的任何查询或读取都会被自动拒绝,并且只允许进行单个文档读取操作,甚至只有在满足条件时才允许。

只需编写一个HTTPS触发的云函数,它只服务于这一个目的。这样就可以在不破坏安全措施的情况下检查文件的存在;即使猜测名字,当回答是真是假时,也几乎没有风险。

最新更新