【发布时间】:2014-03-27 02:16:07
【问题描述】:
我正在建立一个网站,我想保护某些图片不被下载。只有授权用户才能下载它们。
当我使用 Carrierwave 上传图像时,它们存储在 public/uploads/image 中。用户可以通过链接下载:
def transmit
send_file(Rails.root.join('public' , 'uploads', 'image', filename.to_s)
end
如何保护image 文件夹中的图像,使未经授权的用户无法访问它们?假设users 表有布尔列authorized。
最好的方法是什么?
EDIT1:
我知道我可以制作before_action,它不允许未经授权的用户通过下载链接下载它,但如果用户知道存储图像的文件夹的路径,图像仍然可以访问。
【问题讨论】:
-
不要将它们存储在公用文件夹中 - 将它们存储在文件系统的其他位置。
-
@sevenseacat,谢谢。问题是我需要一些可用于公开展示的图像版本,那么我该如何实现呢?我可以将不同的图像版本存储到不同的位置吗?我想在公用文件夹中存储一些缩略图,在私人文件夹中存储一些原件。
标签: ruby-on-rails ruby-on-rails-4 carrierwave sendfile