在S3和cloudfront上运行carrierwave私有文件

ere*_*ere 10 ruby-on-rails amazon-s3 carrierwave amazon-cloudfront ruby-on-rails-4

我有来自亚马逊云端服务器的公共和私人文件,公共文件工作正常,但现在我想通过经过身份验证的读取来确保其中一些是私有的.

私有文件有自己的Uploader DocumentUploader,文件是否需要存储在不同的存储桶中?就像现在一样,他们都在一个桶里.

我曾经用Paperclip做了类似的事情,但似乎找不到使用Carrierwave并使用定时Authenticated_url来做这件事的好资源

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

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

但我不确定如何实现它.

任何提示将非常感谢.

hol*_*den 25

取决于安全性,但您可以设置特定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
  .....
Run Code Online (Sandbox Code Playgroud)

这将自动导致此上传器中的文件现在以临时AWS过期和访问键为前缀,并且将来的上载将设置为私有,即不可公开访问.

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