【问题标题】:Amazon s3 file download亚马逊 s3 文件下载
【发布时间】:2018-01-22 23:18:04
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

有两种相对直接的方法可以做到这一点。

使用 AWS 临时安全凭证

当授权用户加载您的网站时,生成Temporary Security Credentials,该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")

我不推荐这个的原因是因为你会让用户等待图像下载两次。在您的服务器下载图像时一次,然后在用户下载图像时再次。但是,嘿,如果您需要一个快速而肮脏的解决方案,它会起作用的。

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 2014-06-04
    • 2012-08-23
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多