La aplicación en la que estoy trabajando contiene varios estados (usando ui-router), donde algunos estados requieren que inicies sesión, otros están disponibles públicamente.
He creado un método que verifica válidamente si un usuario está conectado, con lo que tengo problemas actualmente es redirigir a nuestra página de inicio de sesión cuando sea necesario. Cabe señalar que la página de inicio de sesión no se encuentra actualmente dentro de la aplicación 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 muestra la URL deseada correctamente. La línea posterior a eso, he intentado prácticamente todo, desde $ window.open a window.location.href y no importa lo que haya intentado, no ocurre ninguna redirección.
EDITAR (RESUELTO):
Encontré el problema.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
La variable landingUrl se configuró en 'domain.com/login', que no funcionaría con $ window.location.href (que fue una de las cosas que probé). Sin embargo, después de cambiar el código a
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
ahora funciona.