L'app su cui sto lavorando contiene vari stati (utilizzando ui-router), in cui alcuni stati richiedono di essere loggati, altri sono disponibili pubblicamente.
Ho creato un metodo che verifica validamente se un utente ha effettuato l'accesso, ciò con cui sto attualmente riscontrando problemi è in realtà il reindirizzamento alla nostra pagina di accesso quando necessario. Va notato che la pagina di accesso non è attualmente posizionata all'interno dell'app 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");
}
});
});
Il file console.log mostra correttamente l'URL desiderato. La riga successiva, ho provato praticamente di tutto, da $ window.open a window.location.href e non importa cosa ho provato, non accade alcun reindirizzamento.
MODIFICA (RISOLTO):
Trovato il problema.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
La variabile landingUrl era impostata su "domain.com/login", che non funzionava con $ window.location.href (che era una delle cose che ho provato). Tuttavia, dopo aver modificato il codice in
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
ora funziona.