extjs store.load пропускает заголовок авторизации

Я пытаюсь пройти в шапке Authorization: 'Bearer <TOKEN>' через параметр в мой store.load() и это не работает.

Это работает, если я делаю это так:

Ext.define('ExtApplication4.model.MenuListModel', {
    extend: 'ExtApplication4.model.Base',
    requires: [
        'ExtApplication4.model.Base'
    ],
    fields: [
        {
            name: 'text',
            type: 'string'
        },
        {
            name: 'iconCls',
            type: 'string'
        },
        {
            name: 'className',
            type: 'string'
        }
    ],
    proxy: {
        type: 'ajax',
        url: 'http://xxxxx/xxx/api/user/getusermenus/',
        reader: {
            type: 'json',
            rootProperty: 'data'
        },
        headers: {
            Authorization: 'Bearer ' + Ext.decode(Ext.util.Cookies.get('token'))
        }
    }
});

Проблема в том, что я хочу заполнить заголовок авторизации в моем store.load(), Я часами пытался найти синтаксис для этого. Все что я пробую, шапка не добавляется.

Может кто-нибудь показать мне, как это сделать?

Вот что я попробовал:

targetStore.load({
    params: {
        username: uname
    },
    //headers: {            
    //    Authorization: 'Bearer ' + token;
    //},
    callback: function (records, operation, success) {

1 ответ

Решение

Вы не можете сделать это в своей загрузке, так же, как вы не можете предоставить другие дополнительные параметры в своей загрузке. При загрузке вы можете перезаписать только небольшое подмножество конфигов, но не почти все. Вам нужно будет установить его перед загрузкой:

store.getProxy().setHeaders({
    Authorization:'Bearer ' + ...
});
store.load({
    ...

Если setHeaders is not a function в вашей версии ExtJS вы можете просто установить

store.getProxy().headers = {
    Authorization:'Bearer ' + ...
};
Другие вопросы по тегам