拦截传出的Kendo Grid调用以添加JWT授权标头

时间:2015-02-04 05:11:34

标签: asp.net-mvc angularjs kendo-ui single-page-application jwt

我正在使用AngularJs处理单页面应用程序。我的应用程序使用JWT Authorization标头令牌进行授权。我有agularJs拦截器,它为我的SPA应用程序的每个传出api调用添加了Authorization标头。

我最近在应用程序中添加了Kendo UI,我注意到Kendo Grid的api调用没有通过我的Angular拦截器。

是否有一种干净的方法可以拦截来自KendoUi组件的所有API调用,以便我可以添加授权标头令牌?

1 个答案:

答案 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;
        }
    }