1

我正在建立一个网站,我想保护某些图像不被下载。只有授权用户才能下载它们。

当我使用 Carrierwave 上传图像时,它们存储在public/uploads/image. 用户可以通过链接下载它们:

def transmit
    send_file(Rails.root.join('public' , 'uploads', 'image', filename.to_s)
end

如何保护image文件夹内的图像,使未经授权的用户无法访问它们?假设userstable 有 boolean column authorized

最好的方法是什么?

编辑1:

我知道我可以before_action让未经授权的用户通过下载链接下载它,但如果用户知道存储图像的文件夹的路径,图像仍然可以访问。

4

1 回答 1

2

通常,carrierwave 将图像存储在 public/uploader 目录中。

def store_dir
 'public/my/upload/directory'
end

.

如果您将文件存储在项目根文件夹之外,您可能希望以相同的方式定义 cache_dir:

class MyUploader < CarrierWave::Uploader::Base
  def cache_dir
   '/tmp/projectname-cache'
  end
 end
于 2014-02-25T06:34:30.320 回答