请求初始身份验证令牌的最佳方式

时间:2017-07-14 22:06:41

标签: javascript jquery angularjs oauth-2.0

我们正在转换我们的整个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;
});

0 个答案:

没有答案