Próbowałem od teraz uzyskać token odświeżania i mam nadzieję, że jestem blisko. Mój token odświeża i wyzwala kolejne 200 wywołań do wywołania 401, ale moje dane na mojej stronie nie odświeżają się.Odświeżanie danych po odświeżeniu tokenu powoduje odświeżenie jwt
Kiedy wygasa token dostępu, dodaje się dzieje:
Po 401 The GetListofCompanyNames zwraca 200 z listą nazw przy użyciu poprawnej zaktualizowaną token dostępu. Jednak moje rozwijanie się nie odświeża.
Moja przechwytujących:
app.factory('authInterceptorService',['$q', '$location', 'localStorageService', '$injector', function($q, $location, localStorageService, $injector) {
return {
request: function(config) {
config.headers = config.headers || {};
var authData = localStorageService.get('authorizationData');
if (authData) {
config.headers.Authorization = 'Bearer ' + authData.token;
}
return config;
},
responseError: function(rejection) {
//var promise = $q.reject(rejection);
var authService = $injector.get('authService');
if (rejection.status === 401) {
// refresh the token
authService.refreshToken().then(function() {
// retry the request
var $http = $injector.get('$http');
return $http(rejection.config);
});
}
if (rejection.status === 400) {
authService.logOut();
$location.path('/login');
}
return $q.reject(rejection);
}
};
}
]);
Moje oświadczenie powrót na odrzucenie 401 wygląda podejrzany tutaj, ale nie jestem pewien, co go zastąpić. W związku z tym moje pytanie brzmi: w jaki sposób mogę uzyskać moją stronę, aby odświeżyć dane, kiedy wykonuję nowe połączenie?
Aktualizacja:
to dostaje mnie przeszłość, kiedy 200 powraca i mogę dostać rozwijana do odświeżenia, ale tracę dowolny stan na stronie (ex wybrany rozwijanej.) Z niżej.
authService.refreshToken().then(function() {
var $state = $injector.get('$state');
$state.reload();
});
Powrót do deski kreślarskiej!
Czy korzystasz z systemu routera angularjs? –
Tak, ui-router: https://github.com/angular-ui/ui-router – RandomUs1r
Czy próbowałeś wprowadzić usługę $ state w swoim 'authInterceptorService' i użyć' $ state.reload() '? –