Приложение, над которым я работаю, содержит различные состояния (используя ui-router), где некоторые штаты требуют, чтобы вы вошли в систему, другие доступны для общественности.
Я создал метод, который корректно проверяет, вошел ли пользователь в систему, что у меня в настоящее время возникают проблемы, на самом деле перенаправляется на нашу страницу входа в систему, когда это необходимо. Следует отметить, что в настоящее время страница входа в систему не размещена в приложении AngularJS.
app.run(function ($rootScope, $location, $window) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.data.loginReq && !$rootScope.me.loggedIn) {
var landingUrl = $window.location.host + "/login";
console.log(landingUrl);
$window.open(landingUrl, "_self");
}
});
});
Консоль .log правильно отображает предполагаемый URL-адрес. После этой строки я попытался практически все: от $window.open до window.location.href и независимо от того, что я пробовал, не происходит перенаправления.
EDIT (RESOLVED):
Обнаружена проблема.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
У переменной landingUrl установлено значение "domain.com/login", которое не работает с $ window.location.href(это была одна из вещей, которые я пробовал). Однако после изменения кода на
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
теперь он работает.