首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速恢复安全规则,防火安全

快速恢复安全规则,防火安全
EN

Stack Overflow用户
提问于 2021-01-03 17:01:21
回答 1查看 444关注 0票数 0

我是一个新开发人员,正在开发我的第一个Firestore应用程序。为了使数据对用户更加安全,我已经更改了Firestore的规则,但是它不允许读/写。

这是关键线路,我不知道如何配置它,具体到我的应用-

代码语言:javascript
复制
    match /some_collection/{userId}/{documents=**} {

我不知道是将" some_collection“更改为集合名称,还是some_collection本身是一个实际的通配符类型。

另外,我是否需要以某种方式将userID从我的快速应用程序传递到Firestore?在这一行中,userID来自哪里?我更愿意制定这样的规则,即只有创建数据的用户才能读写。我相信这个块允许任何经过身份验证的用户,所以我只是尝试探索每一步。

代码语言:javascript
复制
   service cloud.firestore {
      match /databases/{database}/documents {
        // Allow only authenticated content owners access
           match /some_collection/{userId}/{documents=**} {
           allow read, write: if request.auth != null && request.auth.uid == userId
         }
      }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-05 16:34:20

回答你的问题:

这是关键线,我不知道如何配置它特定于我的应用程序。 match /some_collection/{userId}/{documents=**} 我不知道是将" some_collection“更改为集合名称,还是some_collection本身是一个实际的通配符类型。

在上面的行中," some_collection“不是一个防火墙通配符,您需要用集合的实际值替换some_collection。

另外,我是否需要以某种方式将userID从我的快速应用程序传递到Firestore?

是的,预计在阅读或写信到或从消防站之前:

  1. 您已经创建和配置了---- firebase对象firebase.initializeApp({ apiKey: '### FIREBASE API KEY ###', authDomain: '### FIREBASE AUTH DOMAIN ###', projectId: '### CLOUD FIRESTORE PROJECT ID ###' });
  2. 您已经使用authenticated使用了[消]火柴firebase.auth().signInWithCustomToken(token) .then((user) => { // Signed in // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });

传递userId是在调用db时由firebase对象完成的。集合(“col123”).add或任何其他方法。如果你看一下已初始化是怎样的

var db = firebase.firestore();

您将看到它与firebase对象的依赖关系。

在这一行中,userID来自哪里?

userID来自firebase对象.

我相信这个块允许任何经过身份验证的用户,所以我只是尝试探索每一步。

是的,最后一条规则允许任何经过身份验证的用户从/写入子集合/文档通配符{userId}。

最后,我们还希望在您的防火墙文档或子集合的ids中存在一些命名一致性。

这意味着当您创建存储文档时,使用firebase.auth.uid作为文档id.

否则,上述规则将失败,因为{userId}背后的值不等于日志记录用户的firebase.auth.uid。

要实现后者,您可以参考这个回答

我强烈建议您看一看这个视频(从firebase通道),因为它更详细地阐述了防火墙安全规则的核心概念。

我希望你觉得这很有用。

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

https://stackoverflow.com/questions/65552537

复制
相关文章

相似问题

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