限制对Paperclip的访问:S3中的原始文件

时间:2012-12-24 12:16:41

标签: ruby-on-rails-3 amazon-s3 paperclip restriction

如何限制对S3中:original样式文件的任何访问权限,但是仍然可以访问存储桶中其余样式的文件夹?

我看到了如何限制所有访问权限然后检查模型属性的实现。我只想限制:original样式

的访问权限

我在回形针中注意到this line,我只是不知道如何使用(如果可能的话)

2 个答案:

答案 0 :(得分:1)

您可以通过控制器的操作访问文件来限制文件。通过这种方式,您可以控制用户可以访问哪些文件,哪些文件不可以访问。

如果你只是制作一个私人s3桶,这对你没有帮助。具有有效密钥的用户可以访问存储桶中的任何文件。如果您确实需要保护文件,那么您只能查看方法(我认为):

  • 限制对存储桶的访问并通过控制器的操作提供文件(无法解决此问题)
  • 将特定文件重命名为不易预测(例如,数字和字母的32个或更多字符)。这很容易实现,您仍然可以直接从s3
  • 提供文件
  • 将文件保存在其他位置(可能在其他s3存储桶中),因此没有人可以预测它们

对于重命名文件,您可以使用此stackoverflow问题:Paperclip renaming files after they're saved

答案 1 :(得分:1)

我正在寻找的答案(我认为,尚未测试)可以在这里找到

http://rdoc.info/github/thoughtbot/paperclip/Paperclip/Storage/S3

s3_permissions: This is a String that should be one of the "canned" access policies that S3 provides (more information can be found here: docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAccessPolicy.html) The default for Paperclip is :public_read.
You can set permission on a per style bases by doing the following:
:s3_permissions => {
  :original => :private
}
Or globaly:
:s3_permissions => :private