繁体   English   中英

如何使用Ruby on Rails / Coffeescript来测试S3 Presigned GET URL以查看其是否已过期,以及如何对其进行重新生成。

[英]How to test an S3 Presigned GET url to see if it has expired, and regenerate it if it has, using Ruby on Rails/Coffeescript

我正在Ruby on Rails中构建使用Amazon S3进行存储的文档管理系统。 我使用的是carrierwave和carrierwave-aws宝石,用于上传/下载文件。

我有办法在哪里可以生成一个预签名的URL,该URL在一定时间后会过期(越早越好...也许10秒-1分钟),但是我遇到的问题是,如果有人加载了页面并没有立即单击“下载”按钮,则链接失效,并且将它们定向到一个难看的XML错误。

我想找出的是:

  1. 单击下载按钮时如何动态生成预签名的URL(我在考虑Coffeescript)或

  2. 继续并在页面加载时生成预签名的url,但是单击下载后,以某种方式检查它是否返回错误,如果是,则获取新的预签名url并在那时重定向到该URL。 (如果可能,再次考虑使用Coffeescript)

过去,我采用了以下完全服务器端的方法来解决类似的问题(不使用载波,但不应该使用)。

将下载按钮链接到您应用中的控制器/操作,并传递文档的ID。 然后,您的控制器操作会生成一个预签名的URL,然后将用户重定向到该URL。

从理论上讲,您只需要在这样一个预签名的url上保留很短的生存期,尽管如果文件足够大,以至于用户可能希望暂停和继续传输,则建议使用更长的生存期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM