gpt4 book ai didi

Firebase 存储 – 不能删除大小要求

转载 作者:行者123 更新时间:2023-12-03 16:24:09 28 4
gpt4 key购买 nike

我想只允许用户将文件上传到他们自己的存储桶中,最大文件大小为 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 拒绝了它是 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;
}

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

Error: simulator.rules line [5], column [16]. Property resource is undefined on object.



enter image description here

我已经查看了所有这些解决方案并尽可能多地修改了规则,但无济于事:
  • Firebase Storage Allow Deleting Files
  • Firestore Rules Simulator - Resource undefined
  • Firebase Storage Post rules apply to Delete rules
  • Firebase Cloud Storage security rule for deleting

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

    最佳答案

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

    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可以添加到文档中!

    编辑:

    此外,这在模拟器和生产中都有效(在我看来,它比第一个选项更具可读性)。感谢@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;
    }

    关于Firebase 存储 – 不能删除大小要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54228842/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com