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