【发布时间】:2014-08-29 10:55:08
【问题描述】:
我想限制访问的网络服务器上的一些文件。 例如 www.example.com/privatefiles/secret.txt
我试过这个:
routes.rb:
get '/privatefiles/:file.:ext' => 'file_handler#authenticate'
#.......
file_handler_controller.rb:
class FileHandlerController < ApplicationController
def authenticate
if(session[:user_id] == ADMIN)
sendfile
else
redirect_to '/NO'
end
end
end
我发现当我输入 不存在 的文件的 URL 时,它的行为正确,但是当文件存在时,路由会被忽略,浏览器将直接转到该文件,并且甚至从未到达控制器
【问题讨论】:
-
为了限制对文件的访问,我通常宁愿将它们放在我的 web 根目录之外,并通过特定的处理程序访问它,您还可以在其中进行其他类型的检查,而不仅仅是基本的用户身份验证(例如:记录下载,限制访问次数,...)
标签: ruby-on-rails ruby-on-rails-4 routes