キャリアウェーブを使用してアップロードされたすべてのファイルを保持する、heroku にデプロイされたアプリケーションを構築し、開発者がそれらのファイルを保持するために Google ストレージを設定しました。
ここまではすべて正常に動作していますが、ファイルを非公開に保ちたいと思います。ユーザーは表示を許可されている必要があります。開発環境では、すべてがうまく機能します。
ファイル ソースの URL をユーザーから隠すために、次の決定を下しました。
初期化子/carrierwave.rb
CarrierWave.configure do |config|
if Rails.env.production?
config.storage = :fog
config.fog_credentials = {
:provider => 'Google',
:google_storage_access_key_id => 'xxx',
:google_storage_secret_access_key => 'yyy'
}
config.fog_directory = 'wwww'
else
config.storage = :file
end
end
コントローラ
これは、ファイルのパスと名前を世間の目から隠すためにファイルの内容を取得します
def get_file
if Rails.env.production?
redirect_to URI.encode @media_asset.attachment_url
else
send_file ("public/"+@media_asset.attachment_url.to_s),
:type => @media_asset.attachment_content_type,
:length => @media_asset.attachment_file_size,
:status => "200 OK",
:x_sendfile => true,
:filename => "media_asset",
:disposition => 'inline'
end
end
どうやらこれでうまくいくようですが、通常のブラウザ開発者ツールを使用すると、全員が Google ストレージ バケットへのパスを確認し、すべてのファイルにアクセスできるようになります。
この問題を解決する方法についての手がかりはありますか?開発者向けの Google ストレージを使用することは可能ですか?
前もって感謝します、