2017-02-03 152 views
0

我有我的请求拦截象下面这样:角 - 与请求拦截异步操作

var requestFactory = angular.module('queryParamsModule', []) 
     .factory('headerInterceptor', function($injector) { 

      return { 
      request: requestInterceptor 
      }; 

      function requestInterceptor(req) { 
       var accessToken; 
       $injector.get('tokenService').accessToken().then(function(res) { 
       accessToken = res.access_token; 
       console.log(accessToken); >>>>> accessToken is populated fine! 
       req.headers = _.extend({ 
        'Authorization': 'Bearer ' + accessToken 
       }, req.headers); 
       }, function(e) { 
       // error 
       }); 

      return req; 
      } 

     }) 
     .config(function($httpProvider) { 
      $httpProvider.interceptors.push('headerInterceptor'); 
     }); 

     return queryParamsFactory; 

这里的问题是,在请求加入角犯规等待认证头以及添加Authorization头前推拦截。

有没有一种方法可以让我的头部拦截器部分的承诺在accessToken承诺完成后解决?

回答

2

由于the manual说,

请求:拦截器被调用了HTTP配置对象。该功能可以自由修改配置对象或创建一个新的配置对象。该函数需要直接返回配置对象,或者包含配置或新配置对象的承诺。

所以它应该是:

function requestInterceptor(req) { 
     return $injector.get('tokenService').accessToken().then(function(res) { 
     ... 
     return req; 
     }, function(e) { ... }); 
    } 
+0

工作就像魅力。非常感谢! – theConstructor

+0

不客气。 – estus