Ste*_* H. 4 ember.js ember-data
我正在尝试Authorization在初始化和使用适配器后向我的适配器请求添加标头.我可以在创建my时以静态方式添加标题ApplicationAdapter,但我似乎无法在后续REST调用中使用标题.我在尝试这个:
var auth= "Basic " + hash;
App.ApplicationAdapter.reopen({
headers: {
Authorization: auth
}
});
Run Code Online (Sandbox Code Playgroud)
我已经RESTAdapter在ajax方法中进行了调试,并且测试adapter.headers始终是undefined.
接受的答案并没有解决推荐的方法在ember-data中不起作用的事实.我说推荐自:
https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L88
https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L162 以及该文件中的其他位置.
此外,OP提出的未定义的问题具体发生在这里:https: //github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L619
所以,以下根本不起作用:
App.ApplicationAdapter.reopen({
headers: {token: 'reopen_token (NO WORK)' }
});
Run Code Online (Sandbox Code Playgroud)
我试图指出这是一个问题,但它在一小时内关闭:https: //github.com/emberjs/data/issues/1820
希望核心将决定修复此问题或删除评论.但是,是的,现在看来你必须劫持jQuery ajax设置,Ember.$.ajaxPrefilter,或者ajax自己覆盖适配器上的.
编辑:所以在从Ember开发者那里获得更多反馈后,看起来这个问题的核心是试图重新打开已经创建的实例.因此,在定义时使用computered属性(因此它将根据需要更新)似乎是建议的方法.希望有所帮助(最近合并的拉取请求使得在引用文件的注释中更加明显:https://github.com/emberjs/data/pull/1818/files#diff-1d7f5a5b77898df15de501c3c38d4829R108)
编辑2:在我的应用程序中工作,所以这里是代码,以防其他人卡住:
//app.js
App.ApplicationAdapter = DS.ActiveModelAdapter.extend({
namespace: 'api/v1',
headers: function() {
return {
token: this.get('App.authToken') || localStorage.getItem('token')
};
}.property("App.authToken")
});
//login-controller.js (only action shown..assume `data` has user/pass)
actions: {
login: function() {
$.post('/token/', data).done(function(user) {
App.set('authToken', user.token);
//Above will trigger adapters's header computed property to update
// Transition to previous attempted route
var attemptedTransition = self.get('attemptedTransition');
if(attemptedTransition) {
attemptedTransition.retry();
}
else {
self.transitionToRoute('yourapproute');
}
})
.fail(function(response) {
//fail handling omitted
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3586 次 |
| 最近记录: |