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

使用带有 rolify 的 CanCan。不,我没有将 gem 配置为使用授权。但是,当我配置它时,使用 CanCan,它仍然失败,所以它肯定是一个会话问题。

我检查了标头,并且 X-CSRF-Token 在那里并且它是正确的(至少它与元标记中显示的内容匹配)。我想我在这里遗漏了一些东西......我一直在浏览会议 Rails 指南以找出它被杀死的原因,但仍然没有任何线索。

我发现这个问题Rails 3.1 and CKEditor w Carrierwave, cannot upload

该答案的要点是使用

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

但如果我能阻止它,我宁愿不要让自己对 CSRF 开放。我也不确定当 gem 为我处理控制器和模型时我会在哪里使用这条线。

如果我需要提供任何其他信息,请告诉我。

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 回答