首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写云修复安全规则

编写云修复安全规则
EN

Stack Overflow用户
提问于 2021-01-10 11:16:38
回答 2查看 427关注 0票数 0

我正在使用创建一个web应用程序,我想编写我想象过的安全规则,但是我找不到关于这个主题的更好的文档,它总是很简单的事情,比如检查用户是否已登录。

因此,我想要做的是检查客户想要阅读的文章是否有一个称为public的属性,设置为true。也许我可以检查请求的来源,以确定它来自我的网站的网址?我想找到一个解决方案,允许读取,而不需要用户登录,但也有一个最低限度的安全性。

如果属性未定义,是否可以返回true?我想默认设置这篇文章是公开的,但我不知道怎么做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-12 09:38:36

正如Frank所说,您不能限制来自特定域的对Firestore的访问。但是,由于您使用了一些api键来调用您的firebase资源,所以将可以限制此键的使用。调用到特定域。您可以通过转到GCP凭据页->要限制的API键来做到这一点。从那里你可以改变这个密钥是如何被用于网站,应用程序...etc。

对于您来说,有关检查停战是否具有公共属性的其他问题,可以通过使用安全规则轻松地完成,例如:

代码语言:javascript
复制
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" 
    }
  }
}

默认情况下,要将文章设置为公共的,您可以在创建文章文档本身时,通过设置属性(比如“可见性”)来实现这一点。在您的应用程序中,如下所示:

代码语言:javascript
复制
// Add a new document with a generated id.
db.collection("articles").add({
    visibility: "public"
    ...
})
票数 1
EN

Stack Overflow用户

发布于 2021-01-10 13:54:04

我不确定您是否可以只列出您的域,但是您几乎可以使用安全规则来完成您所需要的一切工作。

因此,我要做的是检查客户端要读取的文章是否具有一个称为public的属性,设置为true。

代码语言:javascript
复制
  allow read: if resource.data.yourPropertyName == "public" 

我想找到一个不需要用户登录就允许读取的解决方案。

代码语言:javascript
复制
allow read: if true;

请记住,这些不应该用作过滤器,它们应该控制谁可以写/读东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65652654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档