尝试将安全规则添加到存储。当我添加安全规则以确保只允许经过身份验证的用户进行读/写操作时,模拟器正在运行。但是,当我尝试对文件大小添加其他限制时,遇到了错误。
以下是安全规则:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null && request.resource.size < 5 * 1024 * 1024;
}
}
}
我在files\
下有文件
我在模拟器中收到以下错误:
Simulated read denied
错误详细信息:
Error: simulator.rules line [4], column [29]. Property resource is undefined on object.
如果我也尝试模拟写入,则会发生问题。
EDIT1:重要
好!我发现了this问题,并尝试在那条线上进行了一些实验,并获得了允许读写的模拟器!我进行了以下更改:
allow read, write: if request.auth != null && (request != null
|| request.resource.size < 5 * 1024 * 1024);
基本上,我添加了一个空检查。所以,目前,我不清楚这是怎么回事!
答案 0 :(得分:0)
我能够使用类似的规则解决此问题
match /users/{uid}/{document=**} {
allow read, create, update: if
request.auth != null &&
request.auth.uid == uid &&
(!("resource" in request) || request.resource.data.uid == request.auth.uid);
}
在这种情况下,我想确保更新中的“ uid”属性与用户的uid相匹配。但是,如果您不首先在模拟器中执行“构建文档”,则request.resource
是未定义的(我认为这是一个错误;应该在null
IMO中定义)。
我相信这实际上仅适用于模拟器,并且不是现实的情况,因为创建/更新请求将始终包含一个文档,甚至是一个空文档。但我想我会坚持以防万一。