我正在使用的应用程序包含各种状态(使用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;
现在可以使用了。