AngularJS - prévenir, non authentifié l'utilisateur d'accéder à un itinéraire donné,

Dans mon application lorsque l'utilisateur est connecté, j'ai authService qui définit interne drapeau isAuthenticated. Maintenant, à chaque changement d'itinéraire, j'ai auditeur attaché à $routeChangeStart événement qui vérifie authService.isAuthenticated(). Si non, il doit rediriger vers la connexion de l'itinéraire.

Problème, c'est quand l'utilisateur fait actualisation de la page (tout le authService paramètres sont perdus) et il sera de retour pour vous connecter à nouveau (tout en ayant encore de session valide sur le serveur). Ce n'est pas ce que je veux.

Ce que je voudrais faire est de "bloquer" la route à modifier jusqu'à ce que je obtenir de l'information si l'utilisateur est authentifié (soit à partir de authService qui serait immédiate, ou à partir du serveur si aucune information n'est disponible dans authService, par exemple, après actualisation). J'ai une telle fonction dans authService

        //returns promise
        currentUser: function() {
            if (authService.isAuthenticated()) {
                return $q.when(authService.loggedUser);
            }
            return $http.get('/session').then(function(response) {
                authService.loggedUser = response.user;
                return $q.when(authService.loggedUser);
            });
        }

et que vous souhaitez l'utiliser dans l'écouteur d'événement.

    $rootScope.$on("$routeChangeStart", function (event, next, current) {
        if(isRouteRestricted(next)) {
            authService.currentUser().then(null, function() {
                $location.path('/login');
            });
        }
    });

Le truc, c'est qu'il ne fonctionne pas comme prévu. J'obtiens toujours la cible de route visible que pendant un très court laps de temps, et ensuite, l'utilisateur obtient redirigé. Je crois que c'est dû à la nature de promesses, mais la façon de se débarrasser de cette "clignoter" effet?