让我问您如何在Cloud Firebase控制台中设置安全规则。我已经研究了Firebase官方文档https://firebase.google.com/docs/firestore/security/rules-conditions?authuser=0和本文https://angularfirebase.com/lessons/firestore-security-rules-guide/,但是我无法弄清我应用程序中安全规则的行为。
出了什么问题?
首先,我想从非常基本的规则类型开始。我想仍然允许用户访问产品集合,并且如果用户未经身份验证(未登录)则阻止访问订单集合。
我的规则如下:
service cloud.firestore {
match /databases/{database}/documents {
match /categories/{category} {
allow read, write;
}
match /products/{product} {
allow read, write, list, get, update;
}
match /orders/{order} {
allow read, write: if request.auth.uid != null;
}
}
}
及其当前工作方式:
我只能在我的应用程序管理员中读取,写入产品缩略词 面板(这样我就可以管理产品)但是在客户方面,产品是 受阻。在Firebase控制台中,此规则通过了测试(请参阅screanshot),但在开发人员中 控制台,我会看到一条消息:“缺少权限或权限不足”。 经过10分钟,结果是一样的。尚不清楚 我,因为我设置了一条规则以允许随时访问产品(第9行)。
第二个问题是,如果我测试订单合集,我将遇到一个错误 “错误:simulator.rules第[13]行,第[29]列。空值错误(请参阅screanshot)。
其他有用信息:
谢谢!
答案 0 :(得分:0)
在模拟器中,您尚未打开“已验证”开关。一旦你打开它,传递的请求将具有 auth 值。当前,它为 null,因此您在尝试访问 Orders 集合时遇到错误。