2014-09-06 91 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