the*_*ton 28 authentication ruby-on-rails devise backbone.js
我正在尝试使用PhoneGap,jQuery Mobile和Backbone.js在客户端构建移动应用程序 - 使用运行服务器端的Rails 3 JSON API.
我知道如何在经过身份验证后从服务器获取令牌,但我不知道如何将"token_auth"键/值附加到Backbone.js将对我的服务器进行的所有AJAX请求.
这是我目前的流程:
我看过http://documentcloud.github.com/backbone/#Sync可能会覆盖AJAX调用 - 但这对于这个简单的任务来说似乎非常极端.
有没有人有运行Devise token_authentication和Backbone.js的经验?
dir*_*ira 26
关键是在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);
};
Run Code Online (Sandbox Code Playgroud)
看看这个小提琴:http://jsfiddle.net/dira/ZcY3D/14/
abs*_*tor 14
为什么不将它附加到所有jquery ajax请求中.它会将auth_token添加到jQuery上的所有ajax调用中.当直接使用jQuery ajax(或者这样做的lib)时,这可能很有用.但这也可能是一个安全问题(当你对其他网站进行ajax调用时......).
// this is untested
$.ajaxSetup({ beforeSend : function(xhr, settings){
// just because the auth_token is a private information
if(!settings.crossDomain) {
// parse data object
var dataobj = JSON.parse(xhr.data);
// add authentication token to the data object
dataobj.auth_token = AUTHENTICATION_TOKEN;
// save the dataobject into the jqXHR object
xhr.data = JSON.stringify(dataobj);
}
}});
Run Code Online (Sandbox Code Playgroud)
另一种方法可能是将该令牌写入标头并在服务器端处理它:
// thats not beautiful
$.ajaxSetup({ headers : { "auth_token" : AUTHENTICATION_TOKEN } });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14546 次 |
| 最近记录: |