Firebase 如何在云存储规则中从Firestone数据库获取字段值

Firebase 如何在云存储规则中从Firestone数据库获取字段值,firebase,google-cloud-firestore,google-cloud-storage,firebase-security,Firebase,Google Cloud Firestore,Google Cloud Storage,Firebase Security,在我的云存储规则中,如何从firestore数据库获取字段值 我的云存储桶中的图像路径如下: /users/userId123/myimg.png 现在,当有人试图访问thst时,我想读取以下firestore数据库字段: /用户/userId123/public 如果public是真的,那么任何人都应该能够看到这张图片。如果没有,则只有用户才能看到它 通常,只有用户才能写入文件。这在当前是不可能的。您不能有跨服务安全规则 一种可能的方法是向图像添加元数据值,该值指示图像是否为公共图像,以及您在

在我的云存储规则中,如何从firestore数据库获取字段值

我的云存储桶中的图像路径如下:

/users/userId123/myimg.png


现在,当有人试图访问thst时,我想读取以下firestore数据库字段:

/用户/userId123/public

如果public是真的,那么任何人都应该能够看到这张图片。如果没有,则只有用户才能看到它


通常,只有用户才能写入文件。

这在当前是不可能的。您不能有跨服务安全规则

一种可能的方法是向图像添加元数据值,该值指示图像是否为公共图像,以及您在安全规则中使用的元数据,请参阅


或者,您可以将公共图像放在公用文件夹下?

好的,这有点令人失望,但谢谢您的帮助。当堆栈溢出允许时,我也会将此标记为答案。是的,我认为元数据现在应该是正确的方式。@FrankvanPuffelen嗨,Frank,如果可以的话,我认为副本与OP的情况并不完全相似。他不希望基于试图读取图像的用户的特征(例如,用户角色)控制访问,而是基于图像的特征(即,图像是否为公共图像,在Firestore集合中定义)。因此,IMHO自定义声明在这里没有帮助。“我想阅读以下firestore数据库字段”vs
get(/databases/mydbname/documents/guilds/$(guildID)).data.users[(request.auth.uid)]在[“Admin”,“Member”]
中都是从存储规则访问firestore数据的请求,这(正如您在下面所说的,以及我在链接中所回答的)这是不可能的。您可以自由投票重新打开,但我觉得这已经足够重复相同的用例和解决方案/解决方案了。例如:您下面的答案也可以应用于我链接的问题,并且也是一个有效的答案。不过如果我被否决了也没问题。