【发布时间】:2016-11-03 13:22:05
【问题描述】:
我在 Laravel 5.1 上为 Restful API 使用基于令牌的身份验证。我使用 S3 作为文件存储来上传用户特定的图像。我想将访问权限限制为仅上传图像的用户。他们应该能够在移动 API 中查看图像。有没有办法在不公开 S3 目录的情况下使用 Laravel 5.1 和 S3?
【问题讨论】:
标签: laravel amazon-s3 laravel-5.1
我在 Laravel 5.1 上为 Restful API 使用基于令牌的身份验证。我使用 S3 作为文件存储来上传用户特定的图像。我想将访问权限限制为仅上传图像的用户。他们应该能够在移动 API 中查看图像。有没有办法在不公开 S3 目录的情况下使用 Laravel 5.1 和 S3?
【问题讨论】:
标签: laravel amazon-s3 laravel-5.1
您无法直接对请求者和 S3 执行此操作,但您可以将 S3 客户端 SDK 合并到充当中间人的 Laravel 项目中。
您的 Laravel 项目将有一个 API 可以接收获取资源的请求,并且需要进行身份验证和授权。 这还需要从 user_ids 映射到用户有权访问的资源的 URL/名称列表。像 DynamoDB 这样的东西很好。
如果成功,您可以做以下两件事之一:
获取对象并直接返回给请求者,这可能是最安全和最简单的。
获取签名 URL (http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html),以便请求者可以单独获取资源。这对于大型对象(例如视频)很有用,但任何有权访问中间 URL(例如代理服务器)的人也可以访问该资源。
【讨论】: