Angularjs 未授权时如何重新发送请求

Angularjs 未授权时如何重新发送请求,angularjs,Angularjs,我实现了authInterceptorService,所以当响应未经授权时,我发送新令牌的请求,然后我想重新发送previoes请求。所以我需要将它存储在某个地方并重新发送,最好的方法是什么 var _responseError = function (rejection) { if (rejection.status === 401) { var authService = $injector.get('authService');

我实现了authInterceptorService,所以当响应未经授权时,我发送新令牌的请求,然后我想重新发送previoes请求。所以我需要将它存储在某个地方并重新发送,最好的方法是什么

var _responseError = function (rejection) {
        if (rejection.status === 401) {
            var authService = $injector.get('authService');
            var authData = localStorageService.get('authorizationData');

            if (authData) {
                authService.refreshToken().then(function (response) {
                        //redirect to original request


                    },
                 function (err) {
                     $location.path('/login');
                 });
            }

            authService.logOut();
            $location.path('/login');
        }
        return $q.reject(rejection);
    }

为什么不提出自己的要求呢

// define the original request
var originalRequest = function( some input ){
    $http.post( 'url' , data ).then(onSuccess, _responseError);
}
然后在_responseError函数中,只需调用原始请求

var _responseError = function (rejection) {
        if (rejection.status === 401) {
            var authService = $injector.get('authService');
            var authData = localStorageService.get('authorizationData');

            if (authData) {
                authService.refreshToken().then(function (response) {
                        //redirect to original request

                        originalRequest( some input );

                    },
                 function (err) {
                     $location.path('/login');
                 });
            }

            authService.logOut();
            $location.path('/login');
        }
        return $q.reject(rejection);
    }
此外,在失败时,您会得到请求的原始配置,因此您可以使用该配置

            if (authData) {
                authService.refreshToken().then(function (response) {
                        //redirect to original request

                        $http.post(rejection.config).then( ... , ... );

                    },
                 function (err) {
                     $location.path('/login');
                 });
            }

失败时,您可以在错误响应中获得失败调用的配置,您可以重用该配置。或者,您可以将第一个请求设置为函数并独立调用它。请看下面。当然我不能以这种方式发布配置$http.post(rejection.config)。好吧,您需要查看配置并提取所需的数据。