从我从官方firebase documentation读到的内容和观看this firecast后,我的理解是,为了在客户端显示图像,有两种方法:
第一个是基于服务器的,使用函数并将SignedUrls
写入数据库。
第二种是基于客户端使用StorageReference
并指向存储中的所需路径。
我决定采用第二种方法,因为Firebase客户端SDK使您能够直接查询存储照片,以获取有关照片的更多有用信息(创建日期,元数据等),而无需创建额外的数据库中的条目
(例如SignedUrl
案例中使用functions.storage.ObjectMetadata
)。
我的问题是:
1)可以在客户端代码中使用存储桶名称还是完整的内部照片路径而不存在任何安全风险?
路径表格可能是:
gs://myapp.appspot.com/bucket_folder/username/photoname.PNG
(非默认存储桶)
2)在服务器生成的SignedUrls
上使用客户端SDK方法有什么缺点吗?
答案 0 :(得分:1)
通过Firebase SDK访问云存储中的项目有两种方法:
使用Firebase SDK方法访问数据。
使用下载网址。
当您使用下载URL时,用户不必登录。但是用户只能读取文件并且(如您所发现的)只能访问文件的原始有效负载,不是元数据。
使用Firebase SDK的其他方法时,您的访问权限受安全规则控制。因此,您的用户可能需要登录。