ruby-on-rails - 在 S3 和 cloudfront 上使用 rails carrierwave 私有(private)文件

标签 ruby-on-rails amazon-s3 ruby-on-rails-4 carrierwave amazon-cloudfront

我有从 Amazon cloudfront 提供的公共(public)文件和私有(private)文件,公共(public)文件工作正常,但现在我想通过经过身份验证的读取将其中一些文件保护为私有(private)文件。

私有(private)文件有自己的 Uploader DocumentUploader,文件是否需要存储在单独的存储桶中?就像现在一样,它们都在一个桶中。

不久前我用 Paperclip 做过类似的事情,但似乎找不到一个很好的资源来使用 Carrierwave 和使用定时的 Authenticated_url

我看到他们在这里有类似的东西:

http://www.rdoc.info/github/jnicklas/carrierwave/5d1cb7e6a4e8a4786c2b/CarrierWave/Storage/Fog/File#authenticated_url-instance_method

但我不确定如何实现它。

任何提示将非常感谢。

最佳答案

取决于安全程度,但您可以在特定的 Uploader 类本身上设置文件权限,从而覆盖默认权限,如下所示:

class SomeUploader < CarrierWave::Uploader::Base

  def fog_public
    false
  end

  def fog_authenticated_url_expiration
    5.minutes # in seconds from now,  (default is 10.minutes)
  end
  .....

这将自动导致来自此上传器的文件现在预先添加临时 AWS 到期和访问 key ,并且 future 的上传将设置为私有(private),即不可公开访问。

https://s3.amazonaws.com/uploads/something/1234/124.pdf?AWSAccessKeyId=AKIAJKOSTQ6UXXLEWIUQ&Signature=4yM%2FF%2F5TV6t4b1IIvjseenRrb%2FY%3D&Expires=1379152321

关于ruby-on-rails - 在 S3 和 cloudfront 上使用 rails carrierwave 私有(private)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18714508/

相关文章:

ruby-on-rails - 在任何来源中都找不到 sshkit-1.1.0

ruby-on-rails - Vagrant/VirtualBox VM 配置 : rbenv installs successfully but subsequent uses in script fail

ruby-on-rails - 预期响应为 <redirect>,但为 <200>

ruby-on-rails - 如何比较 Controller 中的枚举模型属性?

objective-c - AWS IOS SDK 1.7.0 -> 架构 armv7s 的 undefined symbol :

amazon-web-services - 如何禁用 Amazon S3 原始终端节点访问

java - 是否可以只更新已经上传到 S3 的文件的一部分?

ruby-on-rails - SQL 语句的 Rails 4 作用域

ruby-on-rails - 在 Rails 简单字符串中解码 JSON 会引发错误

ruby-on-rails - rails 嵌套表单为生成的字段分配唯一 ID