2014-01-16 207 views
1

Ruby on Rails的3.2 我的應用程序已經存儲在圖像:限制系統文件訪問公共

http://name.name.com/system/images/imgs/xxx/xxx/xxx/thumb/xxx.jpg?xxxxxxxxx 

我注意到,你可以訪問這些文件中沒有登錄時,我試圖做一個的before_filter我的控制器,但是當我查看日誌時沒有查詢,也沒有使用控制器。

如何將系統文件的訪問權限限制爲僅在我的網站上登錄的用戶?謝謝

+1

移動文件了'public'文件夾中,然後用一個控制器動作用'send_file'將文件有助於只有經過身份驗證的用戶。 –

回答

1

您需要從$ RAILS_ROOT/public文件夾中移除這些文件並將它們移動到其他地方,例如, $ SHARED_FOLDER /上傳/。

然後創建指向控制器路線:

class FilesController 
    def show 
    # first check credentials 
    path = ... # use params to look up the path, but be careful to check the 
       # validity! 
       # It's probably best to have an index that contains valid files 
       # and to only return those. Otherwise an attacker might be able 
       # to compromise your server and your data. 
    send_file path 
    end 
end 
+0

看來應該有一個簡單的解決方案。如果我只將一些文件從我的數據庫移動到不同的目錄,那麼可伸縮性和管理將變得非常快速。我想公開的大部分文件都是公開的。我能做些什麼來管理數據庫嗎? – DDDD