extjs store.load 通过授权 header 不流入

extjs store.load pass authorization header not flowing in

我正在尝试通过参数将 header 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() 中填充授权 header。 我花了几个小时试图找到执行此操作的语法。我尝试 header 的所有内容都没有添加。

谁能告诉我怎么做?

这是我试过的:

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

你不能在你的load中做,就像你不能在你的load中提供其他extraParams一样。在负载中,您只能覆盖一小部分配置,但不是几乎全部。您必须在加载前进行设置:

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

如果你的 ExtJS 版本 setHeaders is not a function,你可以只设置

store.getProxy().headers = {
    Authorization:'Bearer ' + ...
};