Как я могу избежать отображения страницы на долю секунды до того, как angular ui-router перенаправит на другую страницу?

Я использую angular ui-router для маршрутизации и ng-token-auth для аутентификации на своем веб-сайте. Если пользователь, вошедший в систему, пытается посетить страницу входа, он должен быть перенаправлен на домашнюю страницу (код ниже).

$stateProvider
.state('sign-in',{
    url: '/sign-in',
    templateUrl: 'partials/registrations/sign-in.html',
    controller: 'SigninCtrl as signin',
    resolve: {
      auth: function($auth, $state) {
        $auth.validateUser().then(function(){
          $state.go('home');
        });
      }
    }
  })

Это отлично работает при изменении состояния или при обновлении страницы. Однако, когда я открываю ссылку для входа на новой вкладке, она показывает страницу входа на долю секунды, а затем перенаправляет на домашнюю страницу.

Как избежать отображения страницы входа перед перенаправлением?


person Simmi Badhan    schedule 16.09.2015    source источник


Ответы (1)


Вы можете использовать событие изменения состоянияstateChangeStart .

$stateChangeStart — срабатывает при начале перехода.

angular.module('MyApp').run(function($rootScope, $state) {
    // Check authentication before changing state
    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
        // do authentication work here
    });
});

Для получения дополнительной помощи - https://github.com/angular-ui/ui-router/wiki

person Mohit Pandey    schedule 16.09.2015