【问题标题】:Ajax Uploading via CKeditor gem to Rails kiling sessionAjax 通过 CKeditor gem 上传到 Rails kiling 会话
【发布时间】:2013-07-11 13:40:36
【问题描述】:

我在 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 为我处理控制器和模型时,我也不确定在哪里使用这条线。

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

【问题讨论】:

    标签: ruby-on-rails session file-upload ckeditor csrf


    【解决方案1】:

    对我来说同样的错误。 ckeditor 控制器对此 csrf 保护没有任何作用。 所以最好的方法是跳过它,除非你想改变ckeditor的默认上传器html和js代码。

    我的代码:

    class Ckeditor::ApplicationController < ::ApplicationController
    ...
    skip_before_filter :verify_authenticity_token
    ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-03
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 2012-01-31
      • 2013-03-30
      • 1970-01-01
      相关资源
      最近更新 更多