NodeJS 通过应用程序授予对s3私有存储桶中用户特定图像的访问权限

ycl3bljg  于 5个月前  发布在  Node.js
关注(0)|答案(2)|浏览(36)

我构建了一个MEAN堆栈应用程序,用户可以在其中上传图像。目前,我将图像的URL存储在mongodb中,并将图像本身存储在文件系统中的指定文件夹中。我读到过将这些图像存储在AWS或firebase之类的地方以获得可扩展性,所以我决定使用AWS。
我创建了一个桶,可以上传图片通过穆特罚款。
我怎么能允许用户只在登录到我的应用程序时才能检索他们的图像呢?前端和后端的身份验证已经完成,但我不知道如何使用它来访问s3 bucket并只获取用户特定的图像。
我可以将bucket公开并轻松构建URL,但这意味着每个人(无论他们是否登录到我的应用程序)都可以访问它们,这不是我想要的。

sauutmhj

sauutmhj1#

如果您可以将您的用户认证为Amazon Cognito用户,则在登录期间,他们将承担一个角色。
如果该角色为S3附加了策略,则可以使用${cognito-identity.amazonaws.com:sub}变量。通过将S3存储桶结构化为使用包含此变量的密钥路径,您可以开发一个策略,该策略将仅授予对具有该用户ID前缀的密钥的访问权限。
查看here以获取S3策略示例。

wbgh16ku

wbgh16ku2#

不确定是否仍然需要。您已经建立了身份验证,因此使用它。检查您的用户是否已经登录,以及他们是否可以访问他们请求的图像,在确保他们具有适当的访问权限之后,然后创建一个预签名的URL,并将该URL返回给用户。
预签名的URL是唯一的,并且仅在一定时间内有效。
More Info

相关问题