我正在尝试在客户端使用 PhoneGap、jQuery Mobile 和 Backbone.js 构建一个移动应用程序,并在服务器端运行 Rails 3 JSON API。
我知道如何在经过身份验证后从服务器获取 token ,但我不知道如何将“token_auth”键/值附加到 Backbone.js 将向我的服务器发出的所有 AJAX 请求。
这是我目前的流程:
- 用户在某些表单字段中输入内容并点击“登录”
- Backbone 使用电子邮件和密码信息创建一个新的 Player 对象。
- 我运行 Player.authenticate 将 token 设置为 AUTHENTICATION_TOKEN
- 此后的所有请求都应附加“auth_token="+ AUTHENTICATION_TOKEN
我看过http://documentcloud.github.com/backbone/#Sync也许会覆盖 AJAX 调用 - 但这对于这个简单的任务来说似乎相当极端。
有人有运行 Devise token_authentication 和 Backbone.js 的经验吗?
最佳答案
关键是在Backbone.sync
方法中引入。
您可以这样自己添加:
Backbone.old_sync = Backbone.sync
Backbone.sync = function(method, model, options) {
var new_options = _.extend({
beforeSend: function(xhr) {
var token = $('meta[name="csrf-token"]').attr('content');
if (token) xhr.setRequestHeader('X-CSRF-Token', token);
}
}, options)
return Backbone.old_sync(method, model, new_options);
};
看看这个 fiddle :http://jsfiddle.net/dira/ZcY3D/14/
关于ruby-on-rails - 如何在 Rails、Devise 和 Backbone.js 中使用 token 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7785079/