我正在努力设置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中使用了“标头”对象,因此尝试
var dataManager = ej.DataManager({
url: "/api/app/imports/3",
adaptor: new ej.WebApiAdaptor(),
headers: {
Authorization: ticket
}
});
此代码错误:未捕获的TypeError: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
属性,但是需要对象列表,并将每个对象的每个属性用作HTTP标头。因此,以下代码将包含您要查找的标头:
var dataManager = ej.DataManager({
url: "/api/app/imports/3",
adaptor: new ej.WebApiAdaptor(),
headers: [{
Authorization: ticket
}]
});