我在前端使用Backbone,在后端使用Ruby on Rails。我已经设计了gem,用于我的身份验证。几天前,前端团队完成了他们的工作,现在我需要将这一切绑定在一起。所以我尝试使用带有请求Started POST "/users/sign_in.json"
的json trough主干(标准方式)发送数据,即使我将Completed 401 Unauthorized in 180ms
放在自定义会话控制器中,也会出现错误protect_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。
答案 0 :(得分:1)
您可以将csrf_meta_tags放入partial,然后从public / index发出ajax请求,返回该部分的方法。