我有一个rails应用程序,我上传文件。我使用gem cancan来管理对文件的访问。文件存储在磁盘上。是否可以管理文件的访问权限或限制/允许,即使用户有直接链接?注意我没有使用nginx或apache,它是本地应用程序,因此它最多只是它的独角兽或者只是标准的Rails Web服务器。
答案 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
您必须为此操作设置路线,但基本上就是这样。