将对amazons3文件的访问限制为只允许登录用户访问



当我转到bucket文件的url时,它会立即下载。但是,我只希望登录到我的应用程序的用户能够访问这些文件。

我已经搜索了几个小时,但无法从我的应用程序中找到如何在php中做到这一点。我使用laravel来做这件事,所以代码看起来可能不熟悉。但本质上,它只是生成我的bucket文件的url,然后重定向到下载它的链接

$url = Storage::url('Shoots/2016/06/first video shoot/videos/high.mp4');
return redirect($url);

如何使此文件只能由登录到我的应用程序的用户访问?

我正在开发的一个应用程序遇到了类似的问题。我们最终使用的解决方案是生成S3签名的URLS,它们的到期时间很短。这使我们能够为每个到web服务器的请求生成一个新的签名链接,并将该链接传递给我们已知的授权用户,然后该用户可以在非常有限的时间内访问(几秒钟)。在我们想要在DOM中显示的图像的情况下,我们让API用HTTP 303(参见其他)头和签名的URL进行响应,该URL在几秒钟内过期。这使得浏览器有时间下载图像并在链接过期之前显示它。

这个解决方案有几个风险:我们知道用户可能会请求一个签名的URL,并在过期之前以编程方式与另一个服务共享,或者拦截网络流量的未经授权的用户可能会拦截该请求并自行处理,我们觉得这些都是边缘情况,我们对我们的解决方案感到满意。

最新更新