Ember 数据适配器 headers 未包含在请求中
Ember data adapter headers are not included in the request
基于https://guides.emberjs.com/v2.11.0/models/customizing-adapters/#toc_headers-customization、
import DS from 'ember-data';
import config from '../config/environment';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
session: Ember.inject.service(),
headers: Ember.computed({
get() {
let headers = {};
this.get('session')
.authorize('authorizer:custom', (headerName, headerValue) => {
headers[headerName] = headerValue;
});
return headers;
}
}),
queryRecord(modelName, query) {
return Ember.$.getJSON(`${config.host}/users/me`);
}
});
我在adapter里面定义了一个headers
属性,但是,然后发送到服务器的请求在header里面没有Authentication
(作为结果我一直收到 401
未经授权的错误)。
我尝试在 queryRecord
方法中记录 headers 属性,它确实显示了正确的 header 信息。
我认为问题出在计算的 prop 缓存上。
你可以这样做:
headers: Ember.computed('session.isAuthenticated', {
get() {
let headers = {};
this.get('session')
.authorize('authorizer:custom', (headerName, headerValue) => {
headers[headerName] = headerValue;
});
return headers;
}
}),
或
headers: Ember.computed({
get() {
let headers = {};
this.get('session')
.authorize('authorizer:custom', (headerName, headerValue) => {
headers[headerName] = headerValue;
});
return headers;
}
}).volatile(),
基于https://guides.emberjs.com/v2.11.0/models/customizing-adapters/#toc_headers-customization、
import DS from 'ember-data';
import config from '../config/environment';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
session: Ember.inject.service(),
headers: Ember.computed({
get() {
let headers = {};
this.get('session')
.authorize('authorizer:custom', (headerName, headerValue) => {
headers[headerName] = headerValue;
});
return headers;
}
}),
queryRecord(modelName, query) {
return Ember.$.getJSON(`${config.host}/users/me`);
}
});
我在adapter里面定义了一个headers
属性,但是,然后发送到服务器的请求在header里面没有Authentication
(作为结果我一直收到 401
未经授权的错误)。
我尝试在 queryRecord
方法中记录 headers 属性,它确实显示了正确的 header 信息。
我认为问题出在计算的 prop 缓存上。
你可以这样做:
headers: Ember.computed('session.isAuthenticated', {
get() {
let headers = {};
this.get('session')
.authorize('authorizer:custom', (headerName, headerValue) => {
headers[headerName] = headerValue;
});
return headers;
}
}),
或
headers: Ember.computed({
get() {
let headers = {};
this.get('session')
.authorize('authorizer:custom', (headerName, headerValue) => {
headers[headerName] = headerValue;
});
return headers;
}
}).volatile(),