问题描述
目标:拥有一个长期存在的私有/安全 URL,后端(节点)可以将图像标签提供给前端(反应)。这意味着只有从该 React 应用程序才能访问 URL 以显示在图像标签中。
问题:图像存储在 Google Cloud Storage 存储分区中。该图像未设置为公开,因此当 React 应用访问图像的 URL (mediaLink) 时,会收到 403 错误,因为 React 应用无法访问存储桶。只有后端(节点)拥有服务帐户才能访问 Google Cloud Storage 存储分区。
其他信息:
- 图像文件在 MongoDB 中有一个对应实体。该实体有一个 URL 字段。 React 应用正在使用图像实体的 URL 字段来使用图像显示它。
- 我们没有使用 Firebase。
- 签名 URL 不是一个选项,因为它最多只能存活 7 天。这不是一个好的解决方案,因为假设我们有 1000 张图像,当您想使用新生成的签名 URL 更新数据库中这些图像的 URL 字段时,这是一种资源/操作的浪费。这将在先前签名 URL 到期 7 天后重复。
解决方法
签名 URL 将是最适合您所描述问题的解决方案,但如果由于其他原因它不是一个选项,我会说您将不得不创建一个后端端点来检索该图像,以模拟服务帐户访问权限不会过期。
总而言之,您将不得不选择妥协,要么创建对后端的额外调用,要么额外操作以在 7 天后检索新的签名 URL。