Omni_auth注销骨干保存

时间:2012-11-08 21:13:23

标签: ruby-on-rails backbone.js omniauth

我有一个使用骨干的rails应用程序,但是当我调用save时,服务器正在重定向到登录 - 即使我已经登录(找到骨干模型的页面仅在登录后显示)。

我使用backbone.matroyshka作为嵌套模型 - 但删除它并不能解决问题。

以下是在视图中调用模型保存的代码:

    var view = this;

// save model
this.model.save(null, {
    success: function(model, response) {
        view.$('#saving').hide();
        view.notice('Saved!', 'success');
    },
    error: function(model, response) {
        view.$('#saving').hide();
        view.notice(response, 'error');
        console.log('save failed ' + response, view.model.get('url'));
    }
});

在model.save请求之前,有一个AJAX请求使用jQuery AJAX检索数据:

        $.ajax({
        type: 'GET',
        url: serverUrl,
        data: { url: model.get('url') },
        dataType: "json", 
        context: this,
        success: function(data) {
            model.set(data);
        },

        error: function(xhr, status, error) {
            console.log('lookup share url failed ' + error, this.get('source'),         this.get('about'));
            this.trigger('load:fail');
            if (options.error) {
                options.error(this, error);
            }
        }
    });

model.save接收从服务器找到的302,将其重定向到登录页面。 资源的控制器受

保护
  before_filter :signed_in_user, only: [:create]

signed_in_user是一个会话助手,直接来自使用omni_auth的教程

  def signed_in_user
unless signed_in?
  store_location
  redirect_to login_path, notice: "You must be logged in to find out what they do."
end

我有另一个使用AJAX保存的页面(非主干),并且工作正常(还需要已登录的用户)。

1 个答案:

答案 0 :(得分:2)

我对Backbone没有多少经验,但听起来好像没有发送CSRF token

这篇文章应该会有所帮助: http://ngauthier.com/2011/02/backbone-and-rails-forgery-protection.html