通过Restful API访问Laravel 5.1 S3 Secure Image

时间:2016-11-02 21:53:32

标签: laravel amazon-s3 laravel-5.1

我在Laravel 5.1上使用基于令牌的auth for Restful API。我使用S3作为文件存储来上传用户特定的图像。我想将访问权限仅限于已上传图像的用户。他们应该能够在移动API中查看图像。有没有办法在没有公开S3目录的情况下使用Laravel 5.1和S3做到这一点?

1 个答案:

答案 0 :(得分:2)

您无法直接使用请求者和S3,但您可以将S3客户端SDK合并到充当中间人的Laravel项目中。

您的Laravel项目将拥有一个API,可以接收获取资源的请求,并且需要进行身份验证和授权。 这还需要从user_id到用户有权访问的资源的URL /名称列表的映射。像DynamoDB这样的东西很好。

如果成功,你可以做以下两件事之一:

  1. 获取对象并将其直接返回给请求者,这可能是最安全和最简单的。

  2. 获取签名URL(http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html),以便请求者可以单独获取资源。这对于视频等大型对象非常有用,但是有权访问中间URL的任何人(如代理服务器)也可以访问该资源。