Ruby on rails 通过CKeditor gem将Ajax上传到Rails kiling会话
我正在Rails 3.2.13/Backbone应用程序中使用CKeditor Gem 主干网允许用户通过API完美地更新他们的信息。但当我试图通过CKeditor上传图片时,它会终止我的会话,并说我无权进行更改。因此,API拒绝了保存,并抛出了一个未经授权的401Ruby on rails 通过CKeditor gem将Ajax上传到Rails kiling会话,ruby-on-rails,session,file-upload,ckeditor,csrf,Ruby On Rails,Session,File Upload,Ckeditor,Csrf,我正在Rails 3.2.13/Backbone应用程序中使用CKeditor Gem 主干网允许用户通过API完美地更新他们的信息。但当我试图通过CKeditor上传图片时,它会终止我的会话,并说我无权进行更改。因此,API拒绝了保存,并抛出了一个未经授权的401 rescue_from CanCan::AccessDenied do |exception| render :json => Scientist.includes(:profile, :titles, :websites
rescue_from CanCan::AccessDenied do |exception|
render :json => Scientist.includes(:profile, :titles, :websites)
.find(params[:id]), :status => :unauthorized
end
使用CanCan w/rolify。不,我没有将gem配置为使用授权。然而,当我配置它时,使用CanCan,它仍然失败,所以这肯定是一个会话问题
我已经检查了标题,X-CSRF-Token在那里,并且它是正确的(至少它与meta标记中显示的内容相匹配)。我想我错过了一些东西。。。我一直在浏览《sessions rails指南》,想知道它为什么会被杀死,但仍然没有任何线索
我发现了这个问题
这个答案的要点是使用
skip\u-before\u-filter:verify\u-authenticity\u-token,:only=>[:new\u-from\u-disk]
但如果我能阻止的话,我宁愿不让自己对CSRF敞开大门。我也不确定当gem为我处理控制器和模型时,我会在哪里使用这一行
如果需要提供任何其他信息,请告诉我。我也会遇到同样的错误。
ckeditor控制器对此csrf保护不做任何操作。
因此,最好的方法是跳过它,除非您想更改ckeditor的默认上传程序html和js代码
霉菌代码:
class Ckeditor::ApplicationController < ::ApplicationController
...
skip_before_filter :verify_authenticity_token
...
end
类Ckeditor::ApplicationController<::ApplicationController
...
在\u筛选器之前跳过\u:验证\u真实性\u令牌
...
结束