亚马逊s3文件下载

时间:2017-08-15 03:16:40

标签: angularjs django amazon-s3 django-rest-framework

我正在使用基于Django REST框架/ AngularJS的Web应用程序。 我将使用amazon s3来保存UI中使用的所有图像。 但有一个问题:我希望只有登录用户才能访问这些图像 - 所以我讨厌通过url直接访问s3存储桶上的图像文件,如下所示:

https://racerx-snap4that-media.s3.amazonaws.com/images/iPhone6White-1.png

换句话说 - 此链接仅适用于经过身份验证的用户。 这有什么解决方案或保护政策吗?请帮帮我。

1 个答案:

答案 0 :(得分:0)

有两种相对简单的方法可以实现这一目标。

使用AWS临时安全证书

当授权用户加载您的网站时,生成Temporary Security Credentials,使用户可以访问某个存储桶中的部分或全部资源。在Angular应用程序的预检阶段,您将向API端点发出请求以检索此签名,并在整个应用程序中使用它,假设您在某处具有共享状态。

通过Django视图提供文件

我不推荐这个,但对你来说可能更容易。您只需通过以下视图加载图像:

def get(self, request):

  if not request.user.is_authenticated:
    return HttpResponseForbidden()

  return HttpResponse(requests.get(your_aws_url), content_type="image/png")

我之所以不推荐这个,是因为你会让用户等待图片下载两次。一旦您的服务器下载图像,然后在用户下载图像时再次。但是,嘿,如果你需要一个快速而肮脏的解决方案,那就行了。