2016-06-10 3 views
1

У меня есть два контроллера на одной странице, один для контроллера входа и другого контроллера. Первый контроллер привязан к пути «/», а второй привязан к пути «/ mypath». Если пользователь не вошел в систему, он не может получить доступ к последнему. Он может войти в систему через первый контроллер.
Проблема заключается в том, что при входе пользователя в систему страница будет маршрутизироваться по пути «/». Как предотвратить это? Я хочу, чтобы страница оставалась на текущем пути. Вот что я пробовал. $locationChangeStart событие:Angular JS redirect после входа в систему

mstdapp.run(["$rootScope", function($rootScope){ 
    $rootScope.$on("$locationChangeStart", function(event, newUrl, oldUrl){ 
     $rootScope.returnUrl = newUrl; 
     console.log("new url in run is :"); 
     console.log(newUrl);   
    }); 
}]); 

Затем в контроллере авторизации:

$scope.login = function(){   
      authService.Authenticate($scope.user) 
      .then(function(res){     
       $scope.user.displayname = res.data.name; 
       $scope.isLoggedIn = authService.isAuthenticated();    
       console.log($rootScope.returnUrl); 
      }, function(res){ 
       alert(res.data.error_description); 
       console.log($rootScope.returnUrl); 
      });   

}; 

В $rootScope.returnUrl указывает на "/" пути.

+0

что вы пробовали? –

+0

Я попробовал событие $ locationChangeStart для захвата текущего URL-адреса и передачи в '$ rootScope' в контроллер входа. Затем, после успешного входа в систему, я затем '$ location.path (previousURL)' второму контроллеру. Но он работает не так, как ожидалось. –

+0

Можете ли вы jsfiidle? –

ответ

0

Найден ответ. Это потому, что кнопка входа в систему - это <a> с href="#". Вот почему страница перенаправляется на корневой путь. Удаление href решает мою проблему.

Смежные вопросы