Ember.js动态设置REST身份验证令牌在RESTAdapter头
问题描述:
这SO后(Adding headers after RESTAdapter initialization)是我的编码我的代码指南:Ember.js动态设置REST身份验证令牌在RESTAdapter头
我的身份验证REST获得成功地返回一个标记。我使用AJAX直接而不是通过余烬数据堂妹这只是登录和获得授权令牌(引导在embercast)
这是Chrome网络信息,一旦登录保护主页。授权令牌已打印。 (这仅代表我恩伯APP学习和测试)
正如你可以在AJAX代码中看到,这里的属性设置为身份验证令牌被放入动态的RESTAdapter头每次用户登录
App.set('authToken', response.token);
这是RESTAdapter代码:
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'emberauthslimv3/api',
headers: {
'AUTH-TOKEN': function() {
return {
token : this.get('App.authToken') || localStorage.getItem('token')
}
}.property('App.authToken')
}
});
我已经尝试过各种头部设置的组合,相信我,我现在这样做了大约2天,并且永远不会成功将标记放入标题中。
当我看到在Chrome网络信息,我得到的头是这个
AUTH-TOKEN:[object Object]
任何帮助/指针表示赞赏:d
UPDATE
经过各种组合测试仍然失败,我放弃了,只是使用最简单的黑客, ajaxPrefiler哈哈。至少它的工作原理如下:
if (response.success) {
Ember.$.ajaxPrefilter(function(options, oriOptions, jqXHR) {
jqXHR.setRequestHeader("AUTH-TOKEN", response.token);
});
self.transitionToRoute('/');
}
答
首先,当你有Ember文档时,你采取了一个错误的参考链接。问题是ApplicationAdapter中的头部实现。您正在使用每个标题属性返回对象。
App.ApplicationAdapter = DS.RESTAdapter.extend({
headers: function() {
return {
"AUTH-TOKEN": Ember.get('App.authToken') || localStorage.getItem('token')
};
}.property().volatile()
});
这里是链接。 http://emberjs.com/api/data/classes/DS.RESTAdapter.html#toc_headers-customization
谢谢你的答案和文档链接@CodeJack – 2014-09-06 05:47:25
使用你的答案,AUTH-TOKEN甚至没有插入到标题中。 – 2014-09-06 06:07:28
你使用哪个版本的烬数据? – thecodejack 2014-09-06 09:07:23