Angularjs 重定向到登录时角度ui路由中的循环问题

Angularjs 重定向到登录时角度ui路由中的循环问题,angularjs,google-chrome,angular-ui-router,chromium,Angularjs,Google Chrome,Angular Ui Router,Chromium,我们的环境中有两个不同的应用程序,一个用于处理登录和主门户。当任何人试图访问门户url而其未被记录时,否则功能将保存此url并重定向到登录 $urlRouterProvider.otherwise(function($injector, $location){ console.log($location.absUrl()); //save attempted url //redirect to login, var loginUrl=$location.a

我们的环境中有两个不同的应用程序,一个用于处理登录和主门户。当任何人试图访问门户url而其未被记录时,否则功能将保存此url并重定向到登录

$urlRouterProvider.otherwise(function($injector, $location){

    console.log($location.absUrl());

    //save attempted url


    //redirect to login,
    var loginUrl=$location.absUrl() + '#/login';

    var $window=$injector.get('$window');
    console.log(loginUrl);
    $window.location.href=loginUrl;
});
这在firefox中可以正常工作,但在chrome中,“登录”状态永远不会被解析,因此每次都会返回到默认函数,导致循环

您可以在中看到这个问题

有人能帮我解决吗


编辑:我需要使用$window.location.href执行重定向,因为此应用程序有时会加载到/portal,需要重定向到//login。

不太确定是否需要使用$window.location,但是,如果您只是尝试存储当前位置,然后直接指向您的一个状态,则可以注入$state并使用$state。继续


更新的plunker:

当应用程序最初加载时,它会先点击路径,然后再转到URL中的路径(在您的案例中为/login)。每次执行$window.location时,都会告诉应用程序重新加载。在每次重新加载时,它都会查找到的状态映射,但找不到,因此它会点击“否则…”。。。这样循环

您可以使用when来处理空路由

.when('', '/login')

您也可以将其默认为您的主页,假设您的主页具有逻辑,可以在用户未登录时将其踢回登录状态。

我忘了注释我们需要$window.location.href重定向。谢谢!。我知道我不应该使用$window.location进行重定向,你的另一个答案是关于这个问题的良好实践,但对于我的特殊情况,这个答案是有效的。是的,我把我的另一个答案放在那里是为了最佳实践。
.when('', '/login')