使用 SyncFusion 的基本身份验证 ej.DataManager

Using basic authentication with SyncFusion ej.DataManager

我正在努力设置 SyncFusions ej.Grid 在使用我的 API 获取或更新数据时使用基本身份验证。有没有人有这方面的经验?他们的 examples 似乎稀少。

下面是我尝试过的一些示例。给定以下设置代码:

var ticket = "Basic " + Base64.encode("username:password");

$('#Grid').ejGrid({
    dataSource: dataManager,
    allowPaging: true,
    columns: ["AccountName", "CompanyName"]
});

此代码会显示 chrome 基本身份验证提示:

var dataManager = ej.DataManager({
    url: "/api/app/imports/3",
    adaptor: new ej.WebApiAdaptor()
});

此代码会显示 chrome 基本身份验证提示。

已尝试,因为在 data.min.js

中使用了一个 "headers" 对象
var dataManager = ej.DataManager({
    url: "/api/app/imports/3",
    adaptor: new ej.WebApiAdaptor(),
    headers: {
        Authorization: ticket
    }
});

此代码错误:未捕获类型错误:this.adaptor.processQuery 不是函数

已尝试 https://www.syncfusion.com/forums/117024/does-datamanager-support-odata-v4

var dataManager = ej.DataManager({
    url: "/api/app/imports/3",
    adaptor: new ej.WebApiAdaptor().extend({
        beforeSend: function() {
            request.setRequestHeader("Authorization", ticket);
        }
    })
});

此代码会显示 chrome 基本身份验证提示:

var dataManager = ej.DataManager({
    url: "/api/app/imports/3",
    adaptor: new ej.WebApiAdaptor(),
    beforeSend: function() {
        request.setRequestHeader("Authorization", ticket);
    }
});

此代码会显示 chrome 基本身份验证提示:

var dataManager = ej.DataManager({
    url: "/api/app/imports/3",
    adaptor: new ej.WebApiAdaptor()
});

dataManager.dataSource.beforeSend = function() {
    request.setRequestHeader("Authorization", ticket);
}

经过多次调试缩小代码后,我发现 ej.DataManager 构造函数确实接受 headers 属性,但需要 objects 的列表并使用每个每个 objects 作为 HTTP header 的属性。所以下面的代码将包含您要查找的header:

var dataManager = ej.DataManager({
    url: "/api/app/imports/3",
    adaptor: new ej.WebApiAdaptor(),
    headers: [{
        Authorization: ticket
    }]
});