基于Firebase查询的安全规则不起作用

时间:2020-05-05 17:21:16

标签: firebase firebase-realtime-database firebase-security

我具有以下数据结构:

Orders
|_ -M6LSRsTuVY
    |___ Cust_ID: "6WERv67YUVT"
    |___ Items: "A, B, C, D"
    |___ Status: "Query"
    |___ Location: "xyz"

这表明这是对用户下达的订单的查询。 Cust_ID包含下订单的客户的用户ID。用户列表是一个不同的列表。该订单将对ID与Cust_ID匹配的用户以及类型为Supplier的用户可见。我不在此处提供该数据结构。如果需要,也可以提供。

现在,我为这两种用户类型附加了值事件侦听器,如下所示:

mRef.orderByChild("Status").equalTo("Query").addValueEventListener

上面是供供应商查看处于“查询”阶段的订单,下面是供下订单的用户的

mRef.orderByChild("Cust_ID").equalTo(userid).addValueEventListener

当数据库安全性规则设置为“ true”时,这两种搜索都可以完美地工作。然后,我更改了安全规则,以便只有ID与Cust_ID匹配的Customer或类型为Supplier的用户才能读取订单。 “读取”的数据库安全规则如下:

 ".read": "(auth != null && query.orderByChild === 'Cust_ID' && query.equalTo === auth.uid)
        ||(auth != null && query.orderByChild === 'Status' && query.equalTo === 'Query')",

放置此安全规则后,Customer ID与用户ID匹配的第二个搜索操作可以完美地工作。但是供应商搜索“查询”的第一个搜索操作不起作用,因为存在“权限被拒绝”。

有人可以帮忙这里发生的事情吗?

0 个答案:

没有答案