防止重新生成 S3 预签名 URL

Prevent regeneration of S3 pre-signed URLs

我的应用程序有附件功能。用户可以使用 Slingshot 将文档上传到 S3,然后单击打开模式和显示附件的轮播的按钮。

来自 S3 的 downloadUrls 存储在 Mongo 中,我有一个模板助手将它们吐出,然后 each 将它们放入轮播。实际上,这一切都非常流畅。

但是,我想使用带符号的 url 来提高安全性。我的问题是,单击按钮以显示模式实际上每次都会创建一个子模板。这个子模板然后调用一个方法来创建和 return 签名的 urls。这效率不高。

理想情况下,我希望模式和轮播保持反应性。这样用户就可以上传新文档然后在不刷新页面的情况下查看它。但是——同时,我也不想再辞去一堆文件了。

我采用的方法是使用 Session Var,然后在 url 之间进行比较以查看它们是否已更改。但这似乎不对。我必须指出,浏览器确实将这些上传缓存在轮播中(它们主要是图像)。所以我不太关心实际签名的url的过期时间。

有什么想法吗?我已经阅读了一些关于使用 timefreeze 来早于签名 urls.. 的模式,以便您仅在它超过到期日期时才重新创建。但是,这种模式仍然会调用 md 服务器端并仍然执行 s3.getSignedUrl fn..

谢谢!

我将模态与父模板分开。然后 - 我使用本地集合而不是会话。在 Modal.shown 上,我只是检查本地集合的长度,如果它不存在,那么我将调用服务器以获取签名的 url。这应该保证它被调用一次。

然后可以将新的 S3 文件插入到这个新的本地集合中。这一切都让事情变得被动。

我有 atm 的最干净的溶液