2015-09-16 3 views
1

J'utilise un ui-router angulaire pour le routage et ng-token-auth pour l'authentification sur mon site web. Si un utilisateur connecté essaie de se connecter à la page de connexion, il doit être redirigé vers la page d'accueil (code ci-dessous).Comment puis-je éviter d'afficher une page pendant une fraction de seconde avant que l'ui-router angulaire ne redirige vers une autre page?

$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'); 
     }); 
     } 
    } 
    }) 

Cela fonctionne très bien sur le changement d'état ou lorsque j'actualise la page. Toutefois, lorsque j'ouvre le lien de connexion sur un nouvel onglet, il affiche la page de connexion pendant une fraction de seconde, puis redirige vers la page d'accueil.

Comment puis-je éviter d'afficher la page de connexion avant la redirection?

Répondre

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

Vous pouvez utiliser de changement d'état de l'événement-stateChangeStart.

$stateChangeStart - déclenché lorsque la transition commence.

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 
    }); 
}); 

Pour plus d'aide - https://github.com/angular-ui/ui-router/wiki