我正在使用创建一个web应用程序,我想编写我想象过的安全规则,但是我找不到关于这个主题的更好的文档,它总是很简单的事情,比如检查用户是否已登录。
因此,我想要做的是检查客户想要阅读的文章是否有一个称为public的属性,设置为true。也许我可以检查请求的来源,以确定它来自我的网站的网址?我想找到一个解决方案,允许读取,而不需要用户登录,但也有一个最低限度的安全性。
如果属性未定义,是否可以返回true?我想默认设置这篇文章是公开的,但我不知道怎么做。
发布于 2021-01-12 09:38:36
正如Frank所说,您不能限制来自特定域的对Firestore的访问。但是,由于您使用了一些api键来调用您的firebase资源,所以将可以限制此键的使用。调用到特定域。您可以通过转到GCP凭据页->要限制的API键来做到这一点。从那里你可以改变这个密钥是如何被用于网站,应用程序...etc。
对于您来说,有关检查停战是否具有公共属性的其他问题,可以通过使用安全规则轻松地完成,例如:
service cloud.firestore {
match /databases/{database}/documents {
match /articles/{articleId} {
// I chose visibility as a prop here but it can be anything
allow read: if resource.data.visibility == "public"
}
}
}默认情况下,要将文章设置为公共的,您可以在创建文章文档本身时,通过设置属性(比如“可见性”)来实现这一点。在您的应用程序中,如下所示:
// Add a new document with a generated id.
db.collection("articles").add({
visibility: "public"
...
})发布于 2021-01-10 13:54:04
我不确定您是否可以只列出您的域,但是您几乎可以使用安全规则来完成您所需要的一切工作。
因此,我要做的是检查客户端要读取的文章是否具有一个称为public的属性,设置为true。
allow read: if resource.data.yourPropertyName == "public" 我想找到一个不需要用户登录就允许读取的解决方案。
allow read: if true;请记住,这些不应该用作过滤器,它们应该控制谁可以写/读东西。
https://stackoverflow.com/questions/65652654
复制相似问题