Firebase 存储 – 无法根据大小要求删除

2024-03-17

我想允许用户只将文档上传到自己的存储桶中,最大文件大小为1MB,并且仍然允许他们删除文件。我添加了以下内容:

match /myusers/{userId}/{allPaths=**} {
  allow write: if request.auth.uid == userId && request.resource.size < 1 * 1024 * 1024;
  allow read: if request.auth.uid == userId;
}

我正在模拟器中进行测试并在我的项目中进行测试。这不允许我删除该文档(access denied)。如果我删除&& request.resource.size < 1 * 1024 * 1024;根据上面的规则,可以删除该文档(但不会阻止上传大于 1MB 的文件。

我想也许它拒绝它是因为request.resource is null,所以我尝试了以下方法:

match /myusers/{userId}/{allPaths=**} {
  allow write: if request.auth.uid == userId && (request.resource.size < 1 * 1024 * 1024 || request.resource == null);
  allow read: if request.auth.uid == userId;
}

尽管如此,删除失败并出现以下错误(在模拟器中):

错误:simulator.rules 行 [5],列 [16]。对象上未定义属性资源。

我已经查看了所有这些解决方案并以我能想到的多种方式修改了规则,但无济于事:

  • Firebase 存储允许删除文件 https://stackoverflow.com/questions/40534295/firebase-storage-allow-deleting-files

  • Firestore 规则模拟器 - 资源未定义 https://stackoverflow.com/questions/51874357/firestore-rules-simulator-resource-undefined

  • Firebase 存储发布规则适用于删除规则 https://stackoverflow.com/questions/38922124/firebase-storage-post-rules-apply-to-delete-rules

  • 用于删除的 Firebase Cloud Storage 安全规则 https://stackoverflow.com/questions/50919867/firebase-cloud-storage-security-rule-for-deleting

有谁知道如何设置允许但仍允许删除的文件的最大大小?


弄清楚了!这是在生产中有效的方法and在模拟器中:)

match /myusers/{userId}/{allPaths=**} {
  allow write: if request.auth.uid == userId && 
                  (request.resource.size < 1 * 1024 * 1024 || request.method == 'delete');
  allow read: if request.auth.uid == userId;
}

附注@Doug Stevenson,如果您能够在内部提交注释,我想这对其他人来说会非常有帮助request.method的例子delete, update, get,和/或create可以添加到文档中!

EDIT:

此外,这在模拟器和生产中都有效(在我看来,比第一个选项更具可读性)。感谢@Doug Stevenson 的提示!

match /myusers/{userId}/{allPaths=**} {
  allow write: if request.auth.uid == userId && request.resource.size < 1 * 1024 * 1024;
  allow delete: if request.auth.uid == userId 
  allow read: if request.auth.uid == userId;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase 存储 – 无法根据大小要求删除 的相关文章

  • Firestore - 如何从 DocumentSnapshot 获取集合?

    假设我有一个userSnapshot我已经使用了get手术 DocumentSnapshot userSnapshot task getResult getData 我知道我能够得到field from a documentSnapshot
  • 将查询快照中的文档返回为 json 字符串 firestore

    我在节点到 firestore 中进行了查询以获取文档集合 我想将集合编写为 json 字符串以供应用程序解析 我的代码如下 serverRef db collection servers getDocs serverRef where o
  • 使用 Firebase C++ sdk 时出现“架构 arm64 的未定义符号”

    我于 2016 年 6 月 10 日下载了 firebase c sdk 我将 sdk 添加到我的 iOS 项目中 将 objc 设置到其他链接器标志中 我遇到了链接器错误 请指教 错误日志如下 Undefined symbols for
  • Angular Firebase 使用电话号码登录

    我是这个网站的新手 所以如果我犯了错误 请纠正我 我会修复它 并原谅我 我也是 Angular 4 环境的新手 Firebase 有一个新选项 signInWithPhoneNumber 我想在我的新应用程序上实现它 该方法需要参数 sig
  • 我是否需要扩展 FirebaseInstanceIdService 才能订阅 FCM 主题?

    我想从客户端 android 应用程序 管理主题订阅 我目前正在 onCreate 活动中执行此操作 我想知道正确的方法是否是在 InstanceIdService onTokenRefresh 或任何方便的时间 单击按钮等 订阅 取消订阅
  • 如何使用多重身份验证 - firebase?

    我有一个注册屏幕 其中包含 用户名 电子邮件 电话号码 密码 在本例中 我使用电话号码身份验证来验证号码 因此在用户验证他的号码后 我将他的数据保存到 firebase DB 中 所以在那之后 我将下摆导航到登录屏幕 应该包含电子邮件 密码
  • 前台通知 android 未显示(奥利奥)

    当应用程序位于前景 当我从服务器推送通知时 会调用 onMessageReceived 方法 但是通知不显示 这是我的代码 public class MyFirebaseMessagingService extends FirebaseMe
  • 在 GCloud 中使用 Firebase 截屏时出现错误

    我在尝试集成屏幕截图库时遇到了很多麻烦here https firebase google com docs test lab test screenshots 进入我非常简单的 Android 项目 我非常仔细地按照教程中概述的步骤进行操
  • 没有为类型“Object”定义运算符“[]”。尝试定义运算符“[]”

    我的代码在下面给出了我在这一行中从 firebase 访问用户名时遇到的问题的错误 snapshot data username 它给出了上面提到的错误 我知道访问地图数据的唯一方法是这个 FutureBuilder future Fire
  • Xcode 12 根本没有调用动态链接 Firebase 函数?

    因此 我有一个正在运行的动态链接 当我单击它时它会打开应用程序 但不会发生动态链接的处理 这是因为下面看到的应用程序功能从未输入过 我不知道为什么 func handleIncomingDynamicLink dynamicLink Dyn
  • 如何将 Cloud Firestore 数据库集合下载到 JSON 或 CSV 文件中?

    好的 事情是这样的 我已经在 Flutter Firebase 项目上工作了一段时间 现在我的客户想知道是否有机会从 Cloud Firestore 数据库的某个集合中获取 CSV o JSON 文件 以便稍后使用由Power Bi或其他一
  • 如何在列表视图中滚动添加更多项目?

    这里的代码当前加载了存储在 Firestore 集合中的所有啤酒 我如何最初只加载 10 个啤酒 然后当用户向下滚动并到达 10 个啤酒列表的末尾时 它应该加载最后一次酿造后还有 10 杯 并且酿造应根据时间戳进行排序 class Brew
  • 带有 Firebase 通知的 Flutter Web - subscribeToTopic

    我想在我的 flutter web 应用程序中接收 firebase 通知 我知道 firebase messaging 包不可用于网络 但我已经管理配置我的应用程序以获取令牌 在网络应用程序位于后台时接收并显示消息 并在应用程序位于前台时
  • Cloud Functions for Firebase - 通过 Nodejs/Cloud Function 将多个 PDF 合并为一个

    我遇到了一个问题 我试图通过云功能合并一堆 PDF 然后将合并的 PDF 下载到用户的计算机上 我的提供程序中有一个函数 它调用云函数并传递指向 pdf 的 URL 数组 如下所示 mergePDFs pdfs Create array o
  • GeoFire Swift 3 - 保存和更新坐标

    我正在尝试使用 GeoFire 将坐标存储到 Firebase 数据库中 我不确定如何更新新坐标 因为它们每秒都会更改 更新 随着childByAutoId 它正在为每辆自行车生成一个新的唯一 ID 如何引用这个唯一的自行车 ID 例如 用
  • 如何在 Android 模块中使用 FirebaseAuth

    我正在开发一个聊天库 我想在其中显示登录用户的对话 制作该库的原因是我想将其集成到多个项目中 我现在面临的问题是FirebaseAuth表示用户尚未登录 FirebaseAuth getInstance mFirebaseApp getCu
  • 为 Node.js 客户端应用程序保留 Firebase 用户

    我正在使用 Firebase 构建 Node js 命令行界面 CLI 用于与后端进行身份验证 我想避免让用户每次运行命令时都输入密码 相反 我想实现一个 登录 流程 将凭证保留到文件系统 该凭证可用于后续的无密码身份验证 直到用户 注销
  • Flutter - 名称为 [DEFAULT] 的 FirebaseApp 不存在

    我正在使用 firebase 身份验证系统和 Firestore 开发一个 flutter 应用程序 我工作了3个月 之前没有遇到过这个错误 现在我在 Play 商店上发布了我的应用程序 并且我发现使用模拟器的调试版本也出现此错误 我认为已
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func

随机推荐

  • take 2 $ [1..] 在 haskell 中如何工作?

    我们知道 运算符绑定的是最松散的 并且也关联到右侧 这意味着 1 应该首先被评估 因此 它不应该陷入无限循环吗 为什么它甚至完全停止了 Haskell is lazy and doesn t change that The operator
  • 适用于 C++ 的最佳开放式 XML 解析器是什么? [复制]

    这个问题在这里已经有答案了 我正在寻找一个简单 干净 正确的 XML 解析器来在我的 C 项目中使用 我应该自己写吗 怎么样RapidXML http rapidxml sourceforge net RapidXML 是一个用 C 编写的
  • C++:全局变量作为指针

    我是 C 新手 对全局变量有一个问题 我在许多示例中看 到全局变量是带有堆地址的指针 所以指针位于全局 静态变量的内存中 地址后面的数据位于堆上 对吗 相反 您可以声明存储数据的全局 无指针 变量 因此 数据存储在全局 静态变量的内存中 而
  • Grails - 将 HTML 文件作为 UTF-8 提供?

    通过 tomcat 通过 web app 提供的 html 文件的 UTF 8 被破坏 如果我直接打开文件file 它渲染得很好 如果我在运行应用程序期间查看该文件 它看起来不错 然而 当我部署为战争时 UTF 8字符出现乱码 响应的内容类
  • 如何内省地将处理程序连接到信号?

    gtk Builder http www pygtk org docs pygtk class gtkbuilder html能够识别 GUI 在 XML 文件中描述 可以发出的所有信号 并使用以下方法连接信号 http www pygtk
  • 状态栏中图标的颜色(Flutter)

    我正在使用 FLUTTER 设计指的是状态栏的黑色 并且状态栏图标的颜色必须是白色 那么如何改变 flutter 中状态栏图标的颜色呢 要改变icon白色尝试以下内容build method import package flutter s
  • 在 Rails 中清理迁移的好方法是什么?

    所以我已经在这个 Web 应用程序上工作了一年 我想将模式编译为一个迁移 这样我的文本编辑器加载速度更快 git 工作目录也不会那么混乱 搜索查找会更快 我的任何配置 数据库都不会长 4000px 迁移服务器后 请删除迁移文件 如果您想开始
  • CSV 标准 - 多个表

    我正在开发一个 python 项目 对 csv 文件进行一些分析 我知道 csv 文件没有明确定义的标准 但据我了解定义 https www rfc editor org rfc rfc4180 page 2 https www rfc e
  • 以编程方式控制 Angular-ui 手风琴的好方法是什么?

    我正在使用手风琴指令http angular ui github com bootstrap http angular ui github com bootstrap 我需要更好地控制手风琴何时打开和关闭 更准确地说 我需要手风琴组内的一个
  • ggplot2:如何通过多个变量为图表着色

    我相当确定我在某处看到了这个问题的解决方案 但由于我无法找到它 这就是我的问题 我有一些由多个变量标识的时间序列数据 我希望能够使用多个变量来绘制图表并区分颜色ggplot2 样本数据 date lt c 2016 04 01 UTC 20
  • Symfony2 跨多个应用程序共享用户

    我有多个 symfony2 应用程序 它们共享公共实体 但使用不同的数据库设置 每个数据库都有表user user role and role 问题是 我希望该用户能够登录app1通过访问www myproject com app1 log
  • 从另一个类启动 JavaFX 应用程序

    我需要从另一个 容器 类启动 javafx 应用程序并调用应用程序上的函数 但似乎没有任何方法可以获取对使用 Application launch 方法启动的应用程序的引用 这可能吗 谢谢 假设这是我们的 JavaFX 类 import j
  • 在 Erlang 中确定传入 TCP/IP 连接的 IP 地址和端口

    我想获取传入 TCP IP 连接的 IP 地址和端口号 很遗憾gen tcp s accept and recv函数只返回一个套接字 而gen udp s recv函数还返回地址信息 有没有一种简单的方法来收集属于 Erlang 中套接字的
  • 调整控制台事件的大小

    所以我认为窗口调整大小事件将通过 winproc 进行 我可能是错误的 希望获得控制台调整大小事件的通知 我想在调整大小时最大化控制台缓冲区 一旦完成 基本上将其缩小回窗口大小 从而防止由于缓冲区小于窗口而导致溢出错误 不幸的是 答案是你无
  • 如何用空字符串替换未定义

    我正在使用jsPdf 当字段留空时 pdf 上会打印 未定义 我想用空字符串替换它 我正在尝试使用 if 语句 但我没有得到它 doc text 30 190 Budget if scope currentItem JobOriginalB
  • EF/Postgresql 数据库优先方法可能吗?

    经过几个小时的搜索 我有点失望 任何人都可以确认 或不确认 在现有的 Postgres SQL 数据库中可以使用 EF 数据库优先方法 我的意思是 使用 VS EDMX degigner 吗 一些要求 我想使用 ngsql 提供程序 因为它
  • Raspberry Pi 2 上的 Google Assistant SDK

    Google Assistant SDK 是否也可以在 Pi 2 Model B ARM Cortex A7 32 位处理器 上运行 或者是 Pi 3 Model B ARM Cortex A53 64 位处理器 吗 和跑步 它在 Rasp
  • “数组参数”SQL

    我有一个表 其中包含呼叫数据记录 每个呼叫都有一个呼叫数据记录 其中一个字段是我们在查询数据库时使用的 CallerId 我们使用下面的 TSQL 来模拟数组参数 这是正确的方法还是我们已经走得太远了 ALTER PROCEDURE dbo
  • 何时会出现 UB,因为 ADL 在实例化时未找到最佳重载匹配?

    当函数体被实例化时 依赖函数调用重载解析应该通过ADL在关联的命名空间中找到最佳匹配 否则行为是未定义的 临时候选人 1 https timsong cpp github io cppwp n4861 temp dep candidate
  • Firebase 存储 – 无法根据大小要求删除

    我想允许用户只将文档上传到自己的存储桶中 最大文件大小为1MB 并且仍然允许他们删除文件 我添加了以下内容 match myusers userId allPaths allow write if request auth uid user