Приложение, над которым я работаю, содержит различные состояния (с использованием 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");
}
});
});
В console.log правильно отображается предполагаемый URL. В следующей строке я пробовал практически все, от $ window.open до window.location.href, и что бы я ни пробовал, перенаправление не происходит.
РЕДАКТИРОВАТЬ (РАЗРЕШЕНО):
Нашел проблему.
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;
теперь это работает.