如何更改 Active Storage Service url_expires_in 超时?

Posted

技术标签:

【中文标题】如何更改 Active Storage Service url_expires_in 超时?【英文标题】:How do you change the Active Storage Service url_expires_in timeout? 【发布时间】:2019-03-05 09:48:58 【问题描述】:

当 Active Storage 创建签名的变体 URL 时,它会设置默认超时 5.minutes。我真的很想增加这个,但我一直在搜寻 Github 问题、代码潜水,但在任何地方都找不到。 在服务类的第 44 行设置了 class_attribute,但如何覆盖?

https://github.com/rails/rails/blob/5-2-stable/activestorage/lib/active_storage/service.rb#L44

我正在使用url_for 生成签名的变体链接,然后似乎没有任何方法可以更改设置。 任何帮助将不胜感激。

谢谢! :)

【问题讨论】:

您如何看待继承?来自 service.rb 类并覆盖 url_expires_in 的值? 【参考方案1】:

直接设置ActiveStorage::Service.url_expires_in,例如在初始化器中:

# config/initializers/active_storage.rb
ActiveStorage::Service.url_expires_in = 1.hour

Rails 6 将添加 config.active_storage.service_urls_expire_in:

# config/initializers/active_storage.rb
Rails.application.config.active_storage.service_urls_expire_in = 1.hour

【讨论】:

先生这个配置有限制吗?说你能做一个5.months 持续时间配置吗? @RicardoGreen 根据github.com/rails/rails/issues/31581,如果您使用 S3,则有 1 周的限制。 @George Claghorn 如何生成 active_storage.rb 文件?我的洞项目中没有 active_storage.rb 文件。 如何创建一个不会过期的文件链接? @Corey 您现在可以通过设置公共存储桶来设置永久链接。 edgeguides.rubyonrails.org/…

以上是关于如何更改 Active Storage Service url_expires_in 超时?的主要内容,如果未能解决你的问题,请参考以下文章

更改 ActiveStorage 控制器路径

如何从 Rails Active Storage 中的 url 附加图像

如何使用 Active Storage 保留存储空间和加载时间?

如何使用 Rails 和 Active Storage 实现 AWS S3 分段上传?

Ruby on Rails - Active Storage - 如何只接受 pdf 和 doc?

如何使用 Active Storage Rails 上传到具有 AES256 加密(服务器端加密)的 AWS S3 存储桶?