[英]Ruby on Rails file authorization under RAILS_ROOT/public
我正在尋找一種對位於我的公用文件夾下的文件運行一種check_access
的方法。 我聽說過 RAILS_ROOT/private。 我相信這個目錄滿足了我的需求。
但我沒有關於它的深入信息。 我的核心思想是提供文件以僅使用具有查看/下載文件能力的文件。 比如張貼的圖片,我不希望它們公開。 目前,凡是了解URL的人,只要指向正確的目錄,就可以訪問所有文件。
PS:/public 目錄下的文件是通過carrierwave gem 上傳的。
謝謝。
您可以在數據庫中定義權限,然后可以在向用戶顯示文件的 url 之前添加檢查。 如果您希望它們受到限制,則不應將文件保留在公用文件夾中。
如果您需要對您的文件進行訪問控制,您不想從您的公用文件夾中提供這些文件。 您的公用文件夾是由ActionDispatch::StaticFile
或直接由您的 web 服務器提供的服務器 - 它們都沒有提供您想要的訪問控制。
相反,您將創建一個 controller 來提供文件:
class FilesController < ActionController::Metal
before_action :authenticate! # you need to implement this
before_action :authorize! # you need to implement this
# GET /files/:filename
def show
path = Rails.root.join(
'uploads', # can be any directory you want really
# avoids a malicous user being able to use for example '../../secret/password'
ActiveStorage::Filename.new(params[:file_name]).sanitized
)
if File.exist?(path)
send_file path
else
head :not_found
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.