1

我在前端使用 Backbone,在后端使用 Ruby on Rails。我设计了 gem,用于我的身份验证。几天前,前端团队完成了他们的部分工作,现在我需要将它们绑定在一起。因此,我尝试使用 json 槽骨干(标准方式)通过 request 发送数据,即使我放入自定义会话控制器,我也会Started POST "/users/sign_in.json"收到错误消息。像这样:Completed 401 Unauthorized in 180msprotect_from_forgery except: :create

class UserSessions::SessionsController < Devise::SessionsController

    protect_from_forgery except: :create
    ......
end

如何省略这个,或者我必须在哪里生成我的<%= csrf_meta_tags %>,以便我可以使用我在网上找到的这种方法:

App.csrfToken = $("meta[name='csrf-token']").attr('content');

Backbone.sync = (function(original) {
  return function(method, model, options) {
    options.beforeSend = function(xhr) {
      xhr.setRequestHeader('X-CSRF-Token', App.csrfToken);
    };
    original(method, model, options);
  };
})(Backbone.sync);

我无法将其移回标准 Rails 资产管道,因为前端是与我的后端分开编写的,后端依赖于 require.js。

4

1 回答 1

2

您可以将 csrf_meta_tags 放入部分中,然后从 public/index 向返回该部分的方法发出 ajax 请求。

于 2013-08-15T01:06:45.487 回答