gpt4 book ai didi

firebase - Firestore 安全规则 get() 不起作用

转载 作者:行者123 更新时间:2023-12-04 00:34:17 26 4
gpt4 key购买 nike

解决方案在帖子的最后。一探究竟。

Решение проблемы в конце поста。 Дочитайте。

只是一个简单的问题:这有什么问题,为什么这不起作用?

试图通过在用户部分中具有角色“admin”的用户访问 /titles/{anyTitle} 但仍然得到

Missing or insufficient permissions.


service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow write: if false;
allow read: if false;
}
function userCanWrite () {
return get(/databases/{database}/documents/users/$(request.auth.uid)).data.role == "admin";
}
match /titles/{anyTitle=**} {
allow read: if request.auth != null;
allow write: if userCanWrite();
}
}
}

Here is my database structure

附言

我尝试了官方文件中的另一条规则 get(/databases/{database}/documents/users/$(request.auth.uid‌​)).data.isAdmin == true;
这也行不通

更新:正确的做法

支持帮助我找到了解决方案
这是你应该做的:

数据库结构:

users -> {{ userid }} -> { role: "admin" }



数据库规则设置:

get(usersPath/$(request.auth.uid)).role == "admin" || get(usersPath/$(request.auth.uid)).data.role == "admin";

最佳答案

我联系了 Firebase 支持以报告该错误,他们给了我一个临时解决方案。似乎他们的系统在安全规则方面存在错误。他们说文档没问题,但现在我们应该这样解决:

get(path).data.field == true || get(path).field == true;

因为错误是未填充数据对象,所以您应该检查这两个属性。没有针对此错误启动解决方案的预计到达时间,所以我问他们在解决这个问题时是否可以给我建议,所以我会根据他们的信息更新这个答案。

关于firebase - Firestore 安全规则 get() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629170/

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