12

Amazon クラウドフロントからサーバーするパブリック ファイルとプライベート ファイルの両方があります。パブリック ファイルは正常に動作しますが、認証された読み取りでそれらの一部をプライベートとして保護したいと考えています。

プライベート ファイルには独自の Uploader DocumentUploader があります。ファイルを別のバケットに保存する必要がありますか? 現在のように、それらはすべて 1 つのバケツに入っています。

しばらく前に Paperclip で同様のことを行ったことがありますが、Carrierwave でそれを行い、時間指定された Authenticated_url を使用するための適切なリソースが見つからないようです。

私は彼らがここにそれのようなものを持っているのを見ます:

http://www.rdoc.info/github/jnicklas/carrierwave/5d1cb7e6a4e8a4786c2b/CarrierWave/Storage/Fog/File#authenticated_url-instance_method

しかし、それを実装する方法がわかりません。

どんなヒントでも大歓迎です。

4

3 に答える 3

27

安全性にもよりますが、次のように、特定の Uploader クラス自体にファイルのアクセス許可を設定して、デフォルトのアクセス許可をオーバーライドできます。

class SomeUploader < CarrierWave::Uploader::Base

  def fog_public
    false
  end

  def fog_authenticated_url_expiration
    5.minutes # in seconds from now,  (default is 10.minutes)
  end
  .....

これにより、このアップローダからのファイルの先頭に AWS の一時的な有効期限とアクセスキーが自動的に追加され、今後のアップロードは非公開に設定されます。つまり、パブリックにアクセスできなくなります。

https://s3.amazonaws.com/uploads/something/1234/124.pdf?AWSAccessKeyId=AKIAJKOSTQ6UXXLEWIUQ&Signature=4yM%2FF%2F5TV6t4b1IIvjseenRrb%2FY%3D&Expires=1379152321

于 2013-09-14T10:14:02.213 に答える
1

ここで確認できる限り、保護されたファイル用に別のバケットを作成する必要がある場合があります。

「プライベート」ファイルのセキュリティを独自に実装できます。モデルがある場合は、ファイルが安全かどうかを確認するフィールドを追加して、コントローラーを使用してこのシナリオを管理できます。

使用できる優れた gem の 1 つはcancanです。それを使用して、モデルといくつかの属性 (セキュア フィールド) を管理し、ユーザーのプロファイルに基づいて承認を提供するかどうかを指定できます。

于 2013-09-13T13:28:23.640 に答える