我的授权系统可以很好地处理Ember数据。我所有的余烬数据调用都是使用正确的令牌签名的,使用的是adapater.ajax()
而不是$.ajax
。但是,我遇到了这样的情况:我使用第三方上传库,它使用自己的XHR请求(jquery.fileapi)。这个库为它发出的请求公开了一个" headers“属性,但是我不确定最好的方法是从我的适配器中获取标题并将我正在构建的文件上传组件传递给它。
ApplicationAdapter
export default DS.ActiveModelAdapter.extend({
namespace: 'api/v1',
headers: function() {
var authToken = this.get('session.authToken') || 'None';
return {
'Authorization': Ember.String.fmt('Bearer %@', authToken)
};
}.property('session.authToken')
});
ImageUploadComponent
didInsertElement: function() {
this.$('.js-uploader').fileapi({
url: '/api/v1/users/avatar',
accept: 'image/*',
headers: {'?????????????'}
});
}
当'session.authToken‘发生变化时,我不希望在"headers“中定义全局的。
发布于 2014-12-16 19:41:37
这是我现在要做的。会喜欢其他解决方案的。
DS.Store.reopen({
apiPathFor: function() {
var url = arguments.length ? Array.prototype.slice.call(arguments).join('/') : ''
, adapter = this.adapterFor('application');
return [adapter.urlPrefix(), url].join('/');
}
});
export default Ember.Component.extend({
endpoint: null,
store: Ember.computed.readOnly('targetObject.store'),
didInsertElement: function() {
var store = this.get('store')
, adapter = store.adapterFor('application')
, headers = adapter.get('headers')
, url = store.apiPathFor(this.get('endpoint'));
var args = {
url: url,
headers: headers,
accept: 'image/*'
};
this.$('.js-fileapi').fileapi(args);
},
});
https://stackoverflow.com/questions/27517597
复制相似问题