如何隐藏实际路径Carrierwave

时间:2012-10-05 07:03:39

标签: ruby-on-rails-3 carrierwave

我正在构建一个应用程序(Rails 3.2.8),用户可以上传音乐曲目和相关剪辑。虽然剪辑可以公开访问,但如果没有购买,则无法访问曲目。我正在使用carrierwave上传这两种类型的文件。但是,我不想向用户公开实际的跟踪路径。

此类服务使用哪些技术来保护文件的热链接和/或未经授权的访问?

目前,载波路径如下:

  def store_dir
    "tracks/#{model.user_id}/"
  end

然而,这非常脆弱。任何人都可以轻松猜出网址。

对于授权下载,我可以考虑: 1.静态下载链接(此链接始终对该用户有效。但是,没有访客或其他用户可以使用该URL) 2.每次下载的一般临时链接!

请告诉我我可以考虑的方式(我会研究它们),以便我可以保证文件免于下载而无需购买。

2 个答案:

答案 0 :(得分:1)

好像你想要两个,公开的剪辑和私人的轨道。 我也尝试使用下面的方法(未测试)

来实现这一点
def fog_public
  return @job.job_kind == 'public'
end

答案 1 :(得分:0)

s3允许您存储私人文件,它们仅在给定时间段内可用且具有访问令牌。

使用carrierwave,您只需将fog_publig设置为false,如此处所述https://github.com/jnicklas/carrierwave#using-amazon-s3