0

Rails 3.2.13/Backbone アプリで CKeditor Gem を使用しています

Backbone を使用すると、ユーザーは API を介して自分の情報を完全に更新できます。しかし、CKeditor を介して画像をアップロードしようとするとすぐに、セッションが強制終了され、その変更を行う権限がないと表示されます。そのため、API は保存を拒否し、当然のことながら 401 Unauthorized を吐き出します。

rescue_from CanCan::AccessDenied do |exception|
  render :json => Scientist.includes(:profile, :titles, :websites)
  .find(params[:id]), :status => :unauthorized
end

CanCan を rolify で使用する。いいえ、承認を使用するように宝石を構成しませんでした。ただし、CanCan を使用するように構成したときは、まだ失敗しているため、間違いなくセッションの問題です。

ヘッダーを確認したところ、X-CSRF-トークンがあり、正しいものです (少なくとも、メタ タグに表示されているものと一致します)。ここで何かが欠けていると思います...セッションレールガイドを調べて、なぜそれが殺されているのかを調べましたが、まだ手がかりはありません.

この質問を見つけましたRails 3.1 and CKEditor w Carrierwave, cannot upload

その答えの要点は使用でした

skip_before_filter :verify_authenticity_token, :only => [:new_from_disk]

しかし、CSRFを防ぐことができれば、CSRFにさらされることはありません。また、宝石がコントローラーとモデルを処理しているときに、この行をどこで使用するかわかりません。

追加情報を提供する必要がある場合はお知らせください。

4

1 に答える 1

0

私にとって同じエラー。ckeditor コントローラーは、この csrf 保護に対して何もしません。したがって、ckeditor のデフォルトのアップローダーの html および js コードを変更する場合を除き、スキップするのが最善の方法です。

マイコード:

class Ckeditor::ApplicationController < ::ApplicationController
...
skip_before_filter :verify_authenticity_token
...
end
于 2013-11-01T13:33:01.953 に答える