gpt4 book ai didi

rest - Firebase 规则 query.equalTo 在 REST 上总是返回 "Permission denied"

转载 作者:行者123 更新时间:2023-12-04 08:40:35 27 4
gpt4 key购买 nike

我正在努力确保我的数据库安全,我的场景数据如下所示:

receipts: [
{
userId: id,
...
},
{
userId: id,
...
},
...
]

每张收据都有 userId包含有关其创建者信息的字段。我想返回特定用户的收据列表。为此,我进行了 REST 调用,如下所示:
https://[PROJ_NAME].firebaseio.com/receipts.json?orderBy="userId"&equalTo="[USER_ID]"&auth=[TOKEN]
并且在所有设置为打开它的规则上效果很好。但是我想保护我的数据库,以便其他用户无法仅通过更改 URL 来查看所有资源。

在 firebase 文档中,我发现了这样的片段:
"baskets": {
".read": "auth.uid != null &&
query.orderByChild == 'owner' &&
query.equalTo == auth.uid" // restrict basket access to owner of basket
}

这似乎很合理,所以我将它应用于我的配置,但现在它总是失败。这是我的文件的样子:
{
"rules": {
"receipts": {
".indexOn": ["userId"],
".read": "auth.uid != null &&
query.orderByChild == 'userId' &&
query.equalTo == auth.uid"
}
}
}

不幸的是它总是返回 "error" : "Permission denied" .我因为那件事失去了一整天:(

有人可以帮我吗?

最佳答案

火力士在这里

更新 (2018-01-25):此错误现已修复。由于这是服务器端问题,因此无需更新您的 SDK。

.

原答案如下

服务器解释使用 query.orderByChild 的安全规则的方式存在错误。和 query.equalTo在这一刻。我们正在努力修复。

要暂时解决此问题,您可以结合使用 query.startAtquery.endAt得到相同的结果:

    ".read": "auth.uid != null &&
query.orderByChild == 'userId' &&
query.startAt == auth.uid &&
query.endAt == auth.uid"

关于rest - Firebase 规则 query.equalTo 在 REST 上总是返回 "Permission denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48412285/

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