使用直接链接管理对文件的访问

时间:2016-07-27 14:41:50

标签: ruby-on-rails ruby

我有一个rails应用程序,我上传文件。我使用gem cancan来管理对文件的访问。文件存储在磁盘上。是否可以管理文件的访问权限或限制/允许,即使用户有直接链接?注意我没有使用nginx或apache,它是本地应用程序,因此它最多只是它的独角兽或者只是标准的Rails Web服务器。

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。将文件从您的Web服务器提供的public文件夹移出到其他文件夹(例如private),并在控制器中使用send_file来传输数据。控制器的一些伪代码:

def get_file
  absolute_path = Rails.root + 'private' + params[:filepath]

  if current_user.allowed_to_download?(params[:filepath]) && File.exists?(absolute_path)        
    send_file absolute_path, status: 200 # ok
  else
    render status: 403 # forbidden
  end
end

您必须为此操作设置路线,但基本上就是这样。