Firebase Firesbase存储安全规则允许不遵循更新规则
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; } 在这里,我只允许经过身份验证的用户“创建”文件,而不允许更新/重写 预期行为:不允许更新/重写现有文件 实际行为:当我再次上传不同的文件,但文件名相同{覆盖现有文件}时,
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文件吗?如果到对象的路径相同,则应在规则允许的情况下覆盖该对象。根据您的注释-“如果到对象的路径相同,则应在规则允许的情况下覆盖该对象。”如果规则允许,则应覆盖该对象。我的问题是我已经禁用了覆盖,但它仍在被覆盖。