1

キャリアウェーブを使用してアップロードされたすべてのファイルを保持する、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 ストレージを使用することは可能ですか?

前もって感謝します、

4

2 に答える 2

0

新しくリリースされた署名付き URL 機能 (https://developers.google.com/storage/docs/accesscontrol#Signed-URLs) を使用して、Google Cloud Storage でこれを行うことができます。

于 2012-03-21T00:35:32.617 に答える
0

ユーザーは Google アカウントを持っていますか? その場合は、認証されたダウンロード メカニズムを使用できます。

https://developers.google.com/storage/docs/authentication#cookieauth

于 2012-02-01T01:36:01.067 に答える