2014-11-11 5 views
1

응답이 승인되지 않았을 때 새 토큰에 대한 요청을 보낸 다음 previoes 요청을 다시 보내려는 authInterceptorService를 구현했습니다. 그래서 어딘가에 저장하고 다시 보내야합니다. 어떻게해야할까요?승인되지 않은 경우 요청을 다시 보내는 방법

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); 
    } 
+0

오류가 발생하면 오류 응답에서 실패한 통화의 구성을 얻습니다. 단지 재사용 할 수 있습니다. 또는 첫 번째 요청을 함수로 만들고 독립적으로 호출 할 수 있습니다. 아래를 참조하십시오. – SoluableNonagon

답변

1

왜 나만의 요청을 하시겠습니까?

// 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'); 
       }); 
      } 
+0

확실히이 설정을 http : // http.post (rejection.config)에 게시 할 수 없습니다. – kosnkov

+0

글쎄, 설정을 살펴보고 필요한 데이터를 가져와야합니다. – SoluableNonagon

관련 문제