我在Laravel 5.1上使用基于令牌的auth for Restful API。我使用S3作为文件存储来上传用户特定的图像。我想将访问权限仅限于已上传图像的用户。他们应该能够在移动API中查看图像。有没有办法在没有公开S3目录的情况下使用Laravel 5.1和S3做到这一点?
答案 0 :(得分:2)
您无法直接使用请求者和S3,但您可以将S3客户端SDK合并到充当中间人的Laravel项目中。
您的Laravel项目将拥有一个API,可以接收获取资源的请求,并且需要进行身份验证和授权。 这还需要从user_id到用户有权访问的资源的URL /名称列表的映射。像DynamoDB这样的东西很好。
如果成功,你可以做以下两件事之一:
获取对象并将其直接返回给请求者,这可能是最安全和最简单的。
获取签名URL(http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html),以便请求者可以单独获取资源。这对于视频等大型对象非常有用,但是有权访问中间URL的任何人(如代理服务器)也可以访问该资源。