我正在使用AngularJs处理单页面应用程序。我的应用程序使用JWT Authorization标头令牌进行授权。我有agularJs拦截器,它为我的SPA应用程序的每个传出api调用添加了Authorization标头。
我最近在应用程序中添加了Kendo UI,我注意到Kendo Grid的api调用没有通过我的Angular拦截器。
是否有一种干净的方法可以拦截来自KendoUi组件的所有API调用,以便我可以添加授权标头令牌?
答案 0 :(得分:1)
function setAuthHeader(req) {
var token = tokenStoreService.getToken();
if (token) {
req.setRequestHeader('Authorization', 'Bearer ' + token);
}
}
function setGridAuthorization(dataSource) {
if (dataSource && dataSource.transport && dataSource.transport.options) {
var opt = dataSource.transport.options;
if (opt.read) opt.read.beforeSend = setAuthHeader;
if (opt.update) opt.update.beforeSend = setAuthHeader;
if (opt.destroy) opt.destroy.beforeSend = setAuthHeader;
if (opt.create) opt.create.beforeSend = setAuthHeader;
} else if (dataSource && dataSource.transport) {
var tran = dataSource.transport;
if (tran.read) tran.read.beforeSend = setAuthHeader;
if (tran.update) tran.update.beforeSend = setAuthHeader;
if (tran.destroy) tran.destroy.beforeSend = setAuthHeader;
if (tran.create) tran.create.beforeSend = setAuthHeader;
}
}