Node.js 如何访问存储在谷歌云存储桶中的私有图像?React应用程序是访问要在图像标记中使用的应用程序

Node.js 如何访问存储在谷歌云存储桶中的私有图像?React应用程序是访问要在图像标记中使用的应用程序,node.js,reactjs,google-cloud-platform,google-cloud-storage,Node.js,Reactjs,Google Cloud Platform,Google Cloud Storage,目标:拥有一个长期存在的私有/安全URL,后端(节点)可以为图像标记提供给前端(react)。这意味着只有通过该React应用程序才能访问URL以显示在图像标记中 问题:图像存储在谷歌云存储桶中。映像未设置为public,因此当React应用程序访问映像的URL(mediaLink)时,会出现403错误,因为React应用程序无法访问存储桶。只有后端(节点)拥有服务帐户才能访问Google云存储桶 其他资料: 映像文件在MongoDB中有一个对应实体。实体有一个URL字段。React应用程序正

目标:拥有一个长期存在的私有/安全URL,后端(节点)可以为图像标记提供给前端(react)。这意味着只有通过该React应用程序才能访问URL以显示在图像标记中

问题:图像存储在谷歌云存储桶中。映像未设置为public,因此当React应用程序访问映像的URL(mediaLink)时,会出现403错误,因为React应用程序无法访问存储桶。只有后端(节点)拥有服务帐户才能访问Google云存储桶

其他资料:

  • 映像文件在MongoDB中有一个对应实体。实体有一个URL字段。React应用程序正在使用图像实体的URL字段来使用图像显示它
  • 我们没有使用Firebase
  • 签名URL不是一个选项,因为它最多只能生存7天。这不是一个好的解决方案,因为假设我们有1000个图像,当您想用新生成的签名URL更新数据库中这些图像的URL字段时,这是一种资源/操作的浪费。这将在先前签名的URL过期7天后重复

对于您所描述的问题,签名URL将是最合适的解决方案,但如果出于其他原因无法选择,我会说,您必须创建一个后端端点,模拟服务帐户检索该图像,该服务帐户将提供一个不会过期的访问权限


总之,您将不得不选择妥协,要么创建对后端的额外调用,要么在7天后执行额外操作以检索新的签名URL。

Hello@acetdecastro,欢迎使用StackOverflow!请记住。这样我们就知道答案是否有用,其他社区成员是否也能从中受益。试着确定这是你问题的最终解决方案,对有帮助的答案进行投票,并对那些可以改进或需要额外关注的问题进行评论。祝您入住愉快!