ruby-on-rails - 如何在 Rails、Devise 和 Backbone.js 中使用 token 身份验证?

标签 ruby-on-rails authentication devise backbone.js

我正在尝试在客户端使用 PhoneGap、jQuery Mobile 和 Backbone.js 构建一个移动应用程序,并在服务器端运行 Rails 3 JSON API。

我知道如何在经过身份验证后从服务器获取 token ,但我不知道如何将“token_auth”键/值附加到 Backbone.js 将向我的服务器发出的所有 AJAX 请求。

这是我目前的流程:

  1. 用户在某些表单字段中输入内容并点击“登录”
  2. Backbone 使用电子邮件和密码信息创建一个新的 Player 对象。
  3. 我运行 Player.authenticate 将 token 设置为 AUTHENTICATION_TOKEN
  4. 此后的所有请求都应附加“auth_token="+ AUTHENTICATION_TOKEN

我看过http://documentcloud.github.com/backbone/#Sync也许会覆盖 AJAX 调用 - 但这对于这个简单的任务来说似乎相当极端。

有人有运行 Devise token_authentication 和 Backbone.js 的经验吗?

最佳答案

关键是在Backbone.sync方法中引入。

看看这个实现:https://github.com/codebrew/backbone-rails/blob/master/vendor/assets/javascripts/backbone_rails_sync.js

您可以这样自己添加:

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/

相关文章:

javascript - 是否有一种通用的方法来了解用户是否登录(或进行了身份验证)适用于所有(或至少大多数网站)的网站?

azure - 主动消息端点的身份验证

ruby-on-rails - rails : Multi-tenancy with Devise and Apartment gem

ruby-on-rails - 要使用 :country input, 请安装 country_select 插件

php - PHP Intranet 可以共享 Windows 登录名吗?

ruby-on-rails - 电话格式

ruby-on-rails - 使用两种设备模型(用户和管理员)登录时的 ActionController::InvalidAuthenticityToken

ruby-on-rails - Rails 5 Controller 测试更改 - `Devise::TestHelpers` 已弃用,将从 Devise 中删除。

ruby-on-rails - Rails has_one build_association 在保存前删除记录

javascript - Google map API -- map 不显示