我有从 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/