Używam bardzo prostego przechwytywacza do sprawdzania odpowiedzi Odrzucenie dla 403 Dostęp Zabronione przekierowywanie użytkowników do logowania, ale nie przekierowuje. Mogę console.log aż do linii przed $ location.path i po nim, i nigdy nie występuje. Czy komukolwiek innemu to się przytrafiło? Wpatrywałam się teraz w to trochę ... Początkowo nawet nie chciałem używać lokalizacji $, ale nie mogę wstrzyknąć pliku ui.router bez uzyskania zależności cyklicznej, co również nie pozwala mi zrozumieć żeby się pozbyć, więc lokalizacja $ miała mnie utrzymać w ruchu, a ja myślałem o tym.Przekierowanie AngularJS nie występuje w przechwytywaczu
.factory('AuthInterceptor', ['$q', '$location',
function($q, $location) {
var service = {
responseError: function(responseRejection) {
// Authorization issue, access forbidden
if(responseRejection.status === 403) {
// TODO: show a login dialog, and/or redirect to login
console.log("Response rejected. Redirecting to login...");
$location.path('/login');
$location.replace();
console.log("Not so much with the redirecting... I'm still here");
}
// Propagate error to any chained promise handlers
return $q.reject(responseRejection);
}
}
return service;
}])
Kiedy robisz '$ location.path' zestawieniu obok niej będzie działać, ponieważ nastąpi zmiana ścieżka dopiero w następnym cyklu strawienia. Prawdopodobnie nie możesz bezpośrednio wstrzyknąć '$ state' zamiast tego możesz wstrzyknąć' $ injector' i pobrać '$ injector.get ('$ state'). Go (nazwa_pliku)'. Ustawienie ścieżki lokalizacji lub href itp. Nie blokuje aktywności, co oznacza, że pozwala na wykonanie bieżącego skryptu, a następnie zmianę lokalizacji. – PSL
Dzięki, wstrzyknięcie $ injector działa, a ja nie wiedziałem o nieblokującej aktywności, więc dziękuję jeszcze raz. Powinieneś to zamieścić w odpowiedzi poniżej, aby była bardziej widoczna, a otrzymasz więcej punktów. Jeszcze raz dziękuję – mtpultz
Cieszę się, że działa. Oczywiście, odrzucę odpowiedź. – PSL