我们正在转换我们的整个Web基础架构以使用JWT作为我们的Bearer身份验证令牌,并且我在$httpProvider
上添加了一个全局拦截器,它将从以前的服务中读取令牌(在解析中)从我们的Auth服务器获取的应用程序的根状态。
问题是我得到循环依赖,因为对GET /api/oauth/token
的初始调用使用了使用我的拦截器的$http
服务。因此,我认为我能做到这一点的唯一方法是不在初始请求中使用$http
,对吗?
这样做的正确方法是什么?在这里使用jQuery来进行AJAX调用感觉不对,但这是最好的方法吗?
app.factory('AuthProvider', function($http, $q){
var service = {};
var _token = null;
service.getToken = function(){
var deferred = $q.defer();
// the use of $http here is what causes this issue
$http({
method:'GET',
url:'/api/oauth/token'
}).then(function(res){
_token = res.result;
deferred.resolve(_token);
}, function(res){
deferred.reject(res);
});
return deferred.promise;
}
service.readToken = function(){
return _token;
}
return service;
});