在angularJS中,我想在http头中插入一个Token



在第一步中,我发出一个$http POST请求,请求返回一个Json,字段为"access_token":

  angular    
   .module('obparticularesmx')
   .controller('inicio2', inicio2);
   function inicio2($scope, $rootScope, $state, $http){
       $http({
           method:'POST',
           url:'https://example.token-services.com/token',
           data : {
              client_id: "1561a116-7bde-4967-8471-8d6fb62511fa"
            },
           headers: {
            'Content-Type': 'application/x­www­urlencoded;'
           }
       }).success(function(data) {
       $scope.token = data.access_token;
       });
   }

然后,我使用一个工厂将该令牌放入标头:

    .factory('httpRequestInterceptor', function ($rootScope) {
      return {
        request: function (config) {
          config.headers = {'Authorization':'Bearer ' + $rootScope.token}
      return config;
    }
  };
})

但当我发送时,在授权条目中,我看到一个未定义的值:

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate, br
Accept-Language en-US,en;q=0.5
**Authorization** Bearer undefined
Host particulares-gw-obparticularesmx dev.appls.cto2.paas.gsnetcloud.com
Origin http://localhost:3000
Referer http://localhost:3000/
User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0

什么是解决方案?

此行:

$scope.token = data.access_token;

需要

$rootScope.token = data.access_token;

这是因为$scope可以读取由$rootScope分配的值($rootScope属性向下渗透到所有$scope s),但$rootScope不能读取分配给单个$scope s的值。

相关内容

  • 没有找到相关文章

最新更新