예외를위한 각도 인터셉터를 구현하려고합니다. 적어도 하나는. 나는 토큰을 가지고 있고, 오래된 enogh 백엔드가 TokenAlmostExpired exception
을 던질 때. 이 예외는 errorCode = 101
을 포함합니다. 요격 코드에서 코드가 101인지 확인한 다음 POST request
을 백엔드의 /refresh endpoint
으로 보내야 토큰을 새로 고칠 수 있습니다.
.factory('errorInjector',['$injector', function ($q, $injector) {
var vm = this;
var errorInjector = {
'response': function (response) {
console.log(response);
return response;
},
'responseError': function (rejection) {
if (JSON.stringify(rejection.data.errorCode) === JSON.stringify(101)) {
vm.getRefreshToken();
}
return $q.reject(rejection);
}
};
return errorInjector;
}]);
및
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('errorInjector');
}]);
$ HTTP
그러나 요격 수준에서 문제가 Circular dependency found: $http <- errorInjector <- $http <- $templateFactory <- $view <- $state
이 때문에 난 그냥, 그것은 $http
에 의존성 줄 수 없다,있다 $ 범위
$ 범위 종속성도 '순환 종속성'을 제공하기 때문에 에 getRefreshToken()
함수를 넣을 수 없습니다.
$ 인젝터
var http = $injector.get('$http');
은 잘 작동하지 않습니다, 그리고 나 erorr 제공합니다.
그래서 어떻게하면 인터셉터에서 예외를 발견하고 거기에서 $ http 요청을 할 수 있습니까?
이벤트를 해고하고 거기에서 실행을 수행하고 거기에서 실행을 수행하는 것이 좋습니다 –
rootscope를 사용하지 말고 직접 이벤트 수집기를 만드십시오 ... –
전체 errorInjector 코드를 표시 할 수 있습니까? 완전한 구현이 아닌 것 같습니다. –