Я хочу создать простую проверку проверки подлинности для моих маршрутов внешней службой.
Я определяю требования к доступу к объекту маршрута:
$routeProvider
.when('/', {
templateUrl: 'src/app/views/index.html',
controller: 'indexCtrl',
authenticated: true
})
.when('/login', {
templateUrl: 'src/app/views/login.html',
controller: 'loginCtrl',
anonymous: true
})
.otherwise({
redirectTo: '/'
})
;
Затем я проверяю, есть ли у меня разрешение в событии $routeChangeStart
.
$rootScope.$on('$routeChangeStart', function (event, next) {
if(next.authenticated && !$myService.isLoggedin())
$location.path("/login");
else if(next.anonymous && $myService.isLoggedin())
$location.path("/secured");
});
Собственно, это работает -
если пользователь не аутентифицирован, он переводит его на страницу входа в систему, если он аутентифицирован, но маршрут предназначен для анонимных пользователей, только перемещает их на другую страницу и т.д.
НО. Это перенаправление происходит на самом деле после того, как контроллеры и шаблоны загружаются! И это заставляет моего контроллера выполнять некоторые ненужные запросы для моего REST API, даже если я не аутентифицирован.
Как я могу обработать маршрут до их обработки?