Aplikacja, nad którą pracuję, ma różne stany (przy użyciu routera ui), gdzie niektóre stany wymagają zalogowania, inne są publicznie dostępne.
Stworzyłem metodę, która prawidłowo sprawdza, czy użytkownik jest zalogowany, a obecnie mam problemy z przekierowywaniem na naszą stronę logowania, gdy jest to konieczne. Należy zauważyć, że strona logowania nie jest obecnie umieszczona w aplikacji 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");
}
});
});
Konsola.log prawidłowo wyświetla zamierzony adres URL. W następnej linii próbowałem praktycznie wszystkiego, od $ window.open do window.location.href i bez względu na to, co próbowałem, przekierowanie się nie dzieje.
EDYTUJ (ROZWIĄZANE):
Znalazłem problem.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
Zmienna landingUrl została ustawiona na „domain.com/login”, co nie działało z $ window.location.href (co było jedną z rzeczy, które wypróbowałem). Jednak po zmianie kodu na
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
teraz działa.