Firestore没有执行操作的权限

2024-04-12

我正在尝试在 Firestore 中设置规则,如果每个人都经过身份验证进入应用程序,则每个人都可以读取彼此的内容,但只有文档所有者才能创建、写入、更新或删除它们。

我在 Firestore 中设置了以下规则:

rules_version = '2';

service cloud.firestore {
  match /databases/{database} {
    match /codes/{userID} {
      allow create, write, update, delete: if request.auth.uid == userID;
      allow read: if request.auth.uid != null;
    }
  }
}

我的 Firestore 结构是:

Collection 'codes' > Document 'BNhBibYZ0ThCNCH2gzPRufFsIk22' > nothing in here

我的要求是:

firestore()
  .collection('codes')
  .doc(this.state.userID)
  .onSnapshot((querySnapshot) => {
    if (!querySnapshot) {
      let testObj = {"hello": "world"} 
      firestore().collection('codes').doc(this.state.userID).set(testObj);
    }
  });

我收到的输出是:Error: [firestore/permission-denied] The caller does not have permission to execute the specified operation.

我究竟做错了什么?


您可以使用我创建的以下函数来执行此操作

function isUserAuthenticated() {
    return request.auth.uid != null; 
}

function belongsTo(userId) {
    return request.auth.uid == userId;
}

然后你可以像这样使用它:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }

    match /codes/{userId} {
      allow read : if isUserAuthenticated();
      allow create : if belongsTo(userId);
      allow update: if belongsTo(userId);
      allow delete: if belongsTo(userId);
    }

    /* Functions */
    function isUserAuthenticated() {
      return request.auth.uid != null; 
    }

    function belongsTo(userId) {
      return request.auth.uid == userId;
    }
  }
}   

如果它适合您,请接受作为答案。更多问题可在评论中解答。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firestore没有执行操作的权限 的相关文章

  • 无法显示由 Fine-uploader 上传到 Amazon s3 的图像

    我现在尝试设置fineuploader s3以显示在aws服务器上成功上传的文件的图像 如示例页面上所做的那样 http fineuploader com s3 demo http fineuploader com s3 demo 我 仍然
  • 是否可以禁用特定 jQuery Ajax 调用的 Turbolinks 以防止页面刷新和滚动?

    我有一个 Rails 5 应用程序 非常想使用 Turbolinks 在应用程序中 有几个 PATCH ajax 调用 它们只是用新数据更新服务器 但不需要担心更新页面的状态 每当这些 ajax 请求返回时 Turbolinks 就会刷新页
  • 如何理解 Angular JS 中的控制台错误消息?有什么工具吗?

    我是 Angular JS 的新手 我的第一个问题是如何理解 Angular JS 中控制台的错误消息 我编写了这段用于匹配密码的代码片段 它在控制台上抛出错误 但它工作正常 它是有线的 我无法从这些控制台消息中理解任何内容 谁能指出我为什
  • 如何使用键盘和鼠标控制相机 - Three.js

    我在 WEB GL 中有一个带有 Three js 的 3D 环境 并且我曾经使用 Orbitcontrols js http codepen io nireno pen cAoGI http codepen io nireno pen c
  • Ext JS - 如何滚动到文本区域的底部

    这是我下面的代码 如何滚动到文本区域的底部 它一定是类似的东西 Ext getCmp output setScrollPosition Ext getCmp output getScrollHeight 这是我的文本区域代码 var myW
  • 如何向 jQuery Tokeninput 添加占位符?

    如何将占位符添加到 jQuery Tokeninput 字段 一个正常的placeholder属性在这里不起作用 对于这样的输入
  • 从 x,y 屏幕空间坐标查找 2D 等距网格上的列、行(将方程转换为函数)

    我试图在屏幕空间点 x y 的二维等距网格中找到行 列 现在我几乎知道我需要做什么 即找到上图中红色向量的长度 然后将其与表示网格边界的向量的长度 由黑色向量表示 进行比较 现在我在数学堆栈交换中寻求帮助 以获得用于计算点 x y 与黑色边
  • 将一个文本框的内容复制到另一个文本框

    假设在文本框中输入了一个条目 是否可以在第二个文本框中保留相同的输入文本 如果是这样 这是如何完成的
  • 在 BIRT 中输入参数后更新数据集查询

    在 BIRT 报告设计中传递参数后 如何更改或更新数据集的查询 详细说明 我有一个如下所示的查询 WHERE 该参数标记可以保存不同的值 在用户输入参数后 它看起来像这样 例如 WHERE column name 1 or WHERE co
  • 何时不使用承诺[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在阅读了数十篇关于 es6 Promise 有多伟大以及为什么我们应该实现它们的文章之后 我有这样的感觉 ALL我的 不平凡的 JavaScri
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • v-file-input .click() 不是函数

    我试图以编程方式触发 v file input 的 click 事件 因为它在 Vuetify 的文档中 但它显示一个错误this refs imagePicker click is not a function我在这里错过了什么吗 代码重
  • AJAX:检查字符串是否为 JSON?

    我的 JavaScript 有时会在这一行崩溃 var json eval this responseText 当争论时会导致崩溃eval 不是 JSON 在进行此调用之前有什么方法可以检查字符串是否为 JSON 我不想使用框架 有什么方法
  • 用数组反向查找对象

    假设我有一个这样的对象 resourceMap a 0 1 2 3 4 5 6 7 8 9 10 b 11 12 c 21 23 d 54 55 56 57 510 确定是否的最佳方法是什么resourceId 21将会 c 我们不知道钥匙
  • 如何从顺序键盘导航中删除 Vuetify 附加图标

    在带有 Vuetify 的 Vue js 应用程序中 我有一组用v text field并且其中有一个append icon为了切换文本可见性 如下所示
  • Flux + React.js - 操作中的回调是好还是坏?

    让我解释一下我最近遇到的问题 我有 React js Flux 驱动的应用程序 有一个列表显示文章数量 注意 应用程序中有多个不同的列表 和文章详情查看在里面 但每个列表只有一个 API 端点 它返回文章数组 为了显示我需要的详细信息fin
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • 有关于 PHP 中的 V8JS 的文档吗?

    有没有关于V8JS的文档 我是否只需要标准 PHP 或一些扩展即可使用 V8JS 我将非常感谢有关 PHP 中的 V8JS 的任何信息 要求 PHP 5 3 3 和 V8 库和标头安装在正确的路径中 Install http www php
  • ng-model 和值组合不适用于输入文本框

    我有两个输入文本框 我需要组合在两个文本框中输入的值并将其显示在第三个文本框中 如果我只使用value在第三个文本框中 Box 1
  • 如何获取使用 .map 渲染的第一个元素的 ref?

    我需要在几行中显示视频 卡片 的缩略图 并重点关注第一个缩略图 我使用嵌套地图进行了显示 该代码基本上迭代视频数组并返回多行视频 我们如何关注第一个渲染的元素 我认为我们需要获得第一个要聚焦的元素的引用 但是我们如何在这里设置 ref 并在

随机推荐

  • 如何在 JavaFx 中向标签添加 actionListener

    我正在尝试将 ActionListener 添加到标签中 每当用户输入错误的密码或登录时就会弹出该标签 这是我的登录控制器 public class LoginController implements Initializable FXML
  • 如何使用 Python 和 Pillow 将此索引 PNG 转换为灰度并保持透明度?

    我正在尝试使用 Python Pillow 将图像转换为灰度 我在大多数图像中都没有遇到困难 但是 在使用不同图像进行测试时 我发现了 BeeWare 项目中的这个徽标 我知道它已使用某些图像编辑器进行了进一步编辑 并使用 ImageOpt
  • 使用preparedStatement查询速度较慢,但​​使用executeQuery查询则不然

    我在 Grails 应用程序访问数据时遇到了一个奇怪的问题 更深入地说 我使用PreparedStatement executeQuery 与Statement executeQuery 将问题隔离到一个普通的java8 小型应用程序 考虑
  • 读取串行数据而不需要高 CPU 使用率

    我想在 Linux 下用简单的 C 或 C 程序读取通过 FTDI 串行 接口从 Arduino 发送的消息 Arduino 发送两个字符的 标头 一个命令字节 后跟几个字节的数据 具体取决于命令 我的第一次尝试是简单地使用 open 和
  • 无法在字符串“__zone_symbol__optimizedZoneEventTask”上创建属性“__creationTrace__”

    这是一个糟糕的星期四 这是第 13 号 昨天我向我的同事们解释了我们是多么幸运 13 日是在星期四 而不是星期五 好吧 那是昨天的事 今天我醒来时 阿格的拳头打在我脸上 无法创建属性 创作轨迹 在字符串 zone symbol optimi
  • PHP IMAP 推送电子邮件通知到 iPhone

    我正在编写一个 PHP 脚本 该脚本通过 IMAP 定期检查用户收件箱中是否有新消息 该脚本与 IMAP 服务器保持开放连接 并每 5 秒获取最新消息的 UID 如果 UID 大于最初记录的比较 UID 脚本会向用户的 iPhone 发送推
  • Python:使用 Win32 COM Api 打开 Excel 工作簿

    我使用以下代码在 Excel 中打开并显示工作簿 import win32com client as win32 excel win32 gencache EnsureDispatch Excel Application wb excel
  • Android 电视 - 现在玩纸牌图标

    我目前正在开发一个 Android 电视应用程序 但无法弄清楚如何更改当我在播放视频时离开该应用程序时出现的当前播放卡的图标 This link https developer android com training tv playbac
  • 带有对象输入数组的 Angular 2 形式

    我正在构建一个发票应用程序来学习 Angular2 我遇到的问题是如何构建行项目组件 其中一行包含 3 个输入 这些输入应来自并绑定到行项目数组中的对象 在角度1中 我可以通过添加一个轻松实现这一点ng form指向输入容器的指令 这里相当
  • 处理日期时间格式的“+00:00”

    如何将 2020 06 30 15 20 13 078196 00 00 形式的日期列转换为 pandas 中的日期时间 这就是我所做的 pd concat df df date string apply lambda s pd Serie
  • ASP.NET 如何将文件流式传输给用户

    最初 我试图找出 Response Close 和 Response End 之间的区别 但经过更多谷歌搜索和研究后 很明显我没有看到 Byte 发送回客户端的常见方式 我将在下面留下代码示例 但我想知道执行此操作的行业标准是什么 Byte
  • 通过 qbXML 设置 Employee 的 IsActive

    使用 QbXml 添加或修改员工时出现以下错误 QuickBooks 在解析提供的 XML 文本流时发现错误 我尝试过 true false 这是它返回的值 yes no 和 1 0 这些似乎都不起作用 是否可以为员工设置 IsActive
  • 我怎样才能完成反应日期

    我正在创建消息列表 显示消息发送的时间 这是我的留言集 Messages new Mongo Collection messages Messages attachSchema new SimpleSchema created type D
  • 如果字符串包含列表中的元素,则创建新的条件列[重复]

    这个问题在这里已经有答案了 我正在尝试添加一个新列keywords这将得到价值TRUE如果该单词出现在关键字列表中 该值将是FALSE如果该词没有出现在keywordslist 我的关键字由 100 多个单词组成 因此无法手动添加单词 关键
  • Mongo Java 驱动程序不遵守 limit 方法

    我有这个查询 DBCursor mongoCursor mongoCollection find query sort sort limit 5000 long mongoCursorCount mongoCursor count myLo
  • 如何创建并推送到共享或分布式数组数组?

    我编写了 Julia 代码 其中初始化一个空数组 如下所示 a 稍后在代码中 我简单地推送到该数组 如下所示 推 a b 其中 b c d e 是另一个数组 每个 b 可以具有不同的长度 这在非并行化代码中工作得很好 但是 我想在并行代码中
  • Java 垃圾收集,将引用设置为 null

    public class A A a public static void main String args A b new A new object created obj1 b a new A new object created ob
  • 使用 Werkzeug 和 Jinja2 的上下文处理器

    我的应用程序在 App Engine 上运行并使用Werkzeug http werkzeug pocoo org and Jinja2 http jinja pocoo org 2 我想要一个功能上与 Django 自己的上下文处理器等效
  • 尝试调用未定义的函数 glutInit

    我需要 python 中的一个过剩窗口 我使用 Python 3 5 和 PyOpenGL GLUT 时出现以下异常 Traceback most recent call last File D Test py line 47 in
  • Firestore没有执行操作的权限

    我正在尝试在 Firestore 中设置规则 如果每个人都经过身份验证进入应用程序 则每个人都可以读取彼此的内容 但只有文档所有者才能创建 写入 更新或删除它们 我在 Firestore 中设置了以下规则 rules version 2 s