У меня есть два контроллера на одной странице, один для контроллера входа и другого контроллера. Первый контроллер привязан к пути «/», а второй привязан к пути «/ 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
указывает на "/" пути.
что вы пробовали? –
Я попробовал событие $ locationChangeStart для захвата текущего URL-адреса и передачи в '$ rootScope' в контроллер входа. Затем, после успешного входа в систему, я затем '$ location.path (previousURL)' второму контроллеру. Но он работает не так, как ожидалось. –
Можете ли вы jsfiidle? –