我正在构建一个网站,我希望保护某些图像免于下载。只有授权用户才能下载它们。保护使用Carrierwave上传的图像
当我使用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
@sevenseacat,谢谢。问题是我需要一些版本的图像供公众展示,所以我该如何做到这一点?我可以将不同的图像版本存储到不同的位置?我想有一些缩略图存储在公用文件夹和私人文件夹内的原件。 – user3339562