Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用Firebase的firestore设置存储规则?_Firebase_Google Cloud Firestore_Firebase Security - Fatal编程技术网

是否可以使用Firebase的firestore设置存储规则?

是否可以使用Firebase的firestore设置存储规则?,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,所以我试图在存储中设置规则,但我需要访问firestore才能将其设置正确 以下是我的示例: 在我的firestore数据库中,我有一个名为items的users集合。路径如下所示:/users/items/{itemId} 我希望只有当项目的{id}已存在于firestore数据库的项目集合中时,用户才能使用以下路径将文件读写到存储器:/items/{id}/file.png。 有没有办法使用firestore将规则正确地设置到存储中 我试过这个: service firebase.stora

所以我试图在存储中设置规则,但我需要访问firestore才能将其设置正确

以下是我的示例:

在我的firestore数据库中,我有一个名为
items
users
集合。路径如下所示:
/users/items/{itemId}

我希望只有当项目的
{id}
已存在于firestore数据库的
项目
集合中时,用户才能使用以下路径将文件读写到存储器:
/items/{id}/file.png
。 有没有办法使用firestore将规则正确地设置到存储中

我试过这个:

service firebase.storage {
  match /b/{bucket}/o {
    match /items/{item}/{allPaths=**} {
        allow read, write: if exists(/databases/{database}/documents/users/$(request.auth.uid)/items/$(item));
    }
  }
}
但这不起作用:/


谢谢你的帮助

一个Firebase产品的安全规则无法引用另一个Firebase产品。对性能的影响太大了


如果这样的产品间一致性对您是一个要求,您可能需要考虑从云函数中进行写操作。虽然这不会突然允许跨产品安全规则,但这确实意味着您需要确保是您的代码编写,并且代码运行在比普通用户的手机或PC更可靠的环境中。

好的,所以我来看看云功能。谢谢你的回答!:)这很有帮助。但是,如果您通过云功能将图像上传到Firebase存储,该如何工作?然后我必须先将图像文件或声音文件上传到云函数。我知道你们可以将图像转换成一个长字符串,然后上传到云函数,但还有其他更有效、更好的方法吗?我担心,如果我不将上传改为仅通过云功能完成,黑客可能会将数十亿张图像上传到我的云存储中。这种担心没有必要吗?嗨,弗兰克,三年后我也有同样的问题。我想将图像上载到用户配置文件(存储中),但我需要检查用户是否是要授权的配置文件所有者,答案位于firestore(示例所有者=uid)。三年后有没有新的方法?另一种方法是将概要文件的路径设置为与用户的uid相同(这样我就可以检查发出请求的用户的path=uid)。但是,每个人都知道其他用户的用户uid,这是一个安全问题吗?谢谢,这里没什么变化。知道用户的UID没有安全风险。看见