Firebase Firesbase存储安全规则允许不遵循更新规则

Firebase Firesbase存储安全规则允许不遵循更新规则,firebase,firebase-storage,firebase-security,Firebase,Firebase Storage,Firebase Security,Firesbase存储安全规则允许更新不工作,无法防止文件过度写入 示例规则: match /test/{userId}/{imageId} { allow create: if request.auth.uid == userId; allow update: if false; } 在这里,我只允许经过身份验证的用户“创建”文件,而不允许更新/重写 预期行为:不允许更新/重写现有文件 实际行为:当我再次上传不同的文件,但文件名相同{覆盖现有文件}时,

Firesbase存储安全规则允许更新不工作,无法防止文件过度写入

示例规则:

match /test/{userId}/{imageId} {
        allow create: if request.auth.uid == userId;
        allow update: if false;
    }
在这里,我只允许经过身份验证的用户“创建”文件,而不允许更新/重写

预期行为:不允许更新/重写现有文件

实际行为:当我再次上传不同的文件,但文件名相同{覆盖现有文件}时,允许更新/覆盖


如何防止文件更新?

我尝试在Firebase存储中创建与您相同的结构,结果发现规则对我有效。

我怀疑您的结构是否类似于
/test/{userId}/images/{imageId}
,如果您存储的是用户生成的内容,那么这种结构更有意义。 如果上述情况属实,请将规则更新为:
/test/{userId}/images/{imageId}


如果问题仍然存在,请共享Firebase存储目录结构的屏幕截图。

您共享的规则中没有任何内容可以防止覆盖现有文件。为此,您需要检查是否存在如下所示的现有资源:哦,等等,我现在看到您已经拆分了
create
update
。六羟甲基三聚氰胺六甲醚。。。我从来没有这样做过存储,只有Firestore。但这似乎也适用于存储:,所以我不确定你到底出了什么问题。@FrankvanPuffelen是的,我使用了粒度操作,将
create
update
分开。我还与firestore进行了检查,它可以工作,但存储不起作用。在模拟器中,您可以执行
更新
操作。但在android/web中,您只需使用
put file
,即添加文件。所以,当我添加到同一个文件位置时,这应该算作更新,不应该被允许。@hkchakladar只是为了澄清一下,你说它是在同一个引用中添加另一个thwr文件吗?如果到对象的路径相同,则应在规则允许的情况下覆盖该对象。根据您的注释-“如果到对象的路径相同,则应在规则允许的情况下覆盖该对象。”如果规则允许,则应覆盖该对象。我的问题是我已经禁用了覆盖,但它仍在被覆盖。