我既有公共文件又有私有文件,这些文件都可以从Amazon cloudfront服务器上获取,这些公共文件可以正常工作,但是现在我想通过经过身份验证的读取将其中一些文件作为私有文件进行保护。
私有文件具有自己的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
.....
这将自动导致来自此Uploader的文件现在被临时AWS过期和accesskey前缀,并且将来的上传将被设置为private,即不可公开访问。
https://s3.amazonaws.com/uploads/something/1234/124.pdf?AWSAccessKeyId=AKIAJKOSTQ6UXXLEWIUQ&Signature=4yM%2FF%2F5TV6t4b1IIvjseenRrb%2FY%3D&Expires=1379152321