我在 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 为我处理控制器和模型时我会在哪里使用这条线。
如果我需要提供任何其他信息,请告诉我。