2014-09-06 46 views
0

这SO后(Adding headers after RESTAdapter initialization)是我的编码我的代码指南:Ember.js动态设置REST身份验证令牌在RESTAdapter头

我的身份验证REST获得成功地返回一个标记。我使用AJAX直接而不是通过余烬数据堂妹这只是登录和获得授权令牌(引导在embercast)

​​

这是Chrome网络信息,一旦登录保护主页。授权令牌已打印。 (这仅代表我恩伯APP学习和测试

enter image description here

正如你可以在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] 

enter image description here

任何帮助/指针表示赞赏:d

UPDATE

经过各种组合测试仍然失败,我放弃了,只是使用最简单的黑客, ajaxPrefiler哈哈。至少它的工作原理如下:

 if (response.success) { 
     Ember.$.ajaxPrefilter(function(options, oriOptions, jqXHR) { 
      jqXHR.setRequestHeader("AUTH-TOKEN", response.token); 
     }); 

     self.transitionToRoute('/'); 
     } 

回答

4

首先,当你有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

+0

谢谢你的答案和文档链接@CodeJack – 2014-09-06 05:47:25

+0

使用你的答案,AUTH-TOKEN甚至没有插入到标题中。 – 2014-09-06 06:07:28

+0

你使用哪个版本的烬数据? – thecodejack 2014-09-06 09:07:23