2

Rails アプリケーションに ckeditor または redactor を使用したいと考えています。ckeditor と redactor -railsは両方ともCarrierwaveと既にうまく統合されていますが、アプリケーション内のデフォルト フォルダーではなく、Amazon S3 へのアップロード フォルダーを編集する方法を知りたいです。

Redactor javascript バージョン ( this ) は、実際には javascript でこれを行う方法を提供しますが、Carrierwave と Fog を使用して Rails アプリで行いたいと思います。それは私にはより自然に思えますが、JavaScriptでそれを行うことに害がないか、CarrierwaveとFogで行う利点があるかどうか教えてください.

私はまだこの問題の解決策を見つけていないので、リッチ テキスト エディターの統合を避け、ユーザーにプレーン テキストを使用させ、投稿ごとに 1 つの画像をアップロードするようにしました。しかし、今では優れたテキスト エディタが必要になっています。

この問題に関するドキュメントは見つかりませんでした。同様の問題に直面した人は他にもたくさんいると思います。

キャリアウェーブとフォグを使用して Amazon S3 に写真をアップロードするように ckeditor と redactor の設定を修正する方法を誰かが知っている場合は、回答を残してください。それは非常に高く評価されます。

4

1 に答える 1

3

秘密鍵は決して​​公開されないため、javascript 側に構成を配置しても害はありません (公開しないでください)。

次のコード (サーバー上にあります) を使用して署名とポリシーを生成します。

policy_json='{"expiration": "2020-01-01T00:00:00Z",

  "conditions": [ 
    {"bucket": "bucket name"}, 
    ["starts-with", "$key", ""],
    {"acl": "public-read"},
    {"success_action_redirect": "redirect url"},
    ["starts-with", "$Content-Type", ""],
    ["content-length-range", 0, 1048576]
  ]
}'
policy=Base64.encode64(policy_json).gsub("\n","")
signature = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), 'Your private key', policy)).gsub("\n","")

したがって、秘密鍵はサーバー側に保存され、これらの値 (ポリシーと署名) を取得してビューに配置するために ajax 呼び出しを行うことができます。

バケット ポリシーで、AllowedOrigin が www.yourwebsite.com であることを指定できるようになりました。

これにより、あなたのウェブサイトのみがバケットにコンテンツを投稿できるようになり、悪意のあるユーザーがあなたのアカウントにコンテンツを投稿するのを防ぐことができます.

于 2013-03-07T16:53:44.780 に答える