Я использую очень простой перехватчик, чтобы проверить responseRejection for 403 Access Forbidden, чтобы перенаправить пользователей на логин, но он не перенаправляется. Я могу console.log прямо до строки до $ location.path и после нее, и это никогда не происходит. Кто-нибудь еще это случилось? Я немного уставился на это сейчас ... Первоначально я даже не хотел использовать $ location, но я не могу вводить ui.router, не получая циклическую зависимость, и я тоже не могу понять, как чтобы избавиться от такого местоположения, как предполагалось, меня заставляло двигаться, пока я думал об этом.Переадресация AngularJS не происходит в перехватчике
.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;
}])
Когда вы делаете '$ location.path' заявление рядом с ним будет работать, потому что изменение пути будет происходить только в следующем цикле переварить. Вероятно, вы не можете прямо вводить '$ state', вместо этого вы можете вводить' $ injector' и получать '$ injector.get ('$ state'). Go (statename)'. Также установка пути местоположения или href и т. Д. Не блокирует активность, то есть он позволит текущему сценарию выполнить полностью, а затем изменить locaiton. – PSL
Спасибо, впрыскивая $ injector works, и я не знал о неблокирующей активности, поэтому еще раз спасибо :) Вы должны отбросить это в ответ ниже, чтобы он стал более заметным, и вы получите больше кредитов. Еще раз спасибо – mtpultz
Рад, что он работает. Конечно, я откажусь от ответа. – PSL