2014-11-06 3 views
0

우리 환경에는 로그인과 메인 포털을 처리하는 두 가지 응용 프로그램이 있습니다. 누구든지 포털 URL에 액세스하려고 시도하고 로그인하지 않으면 "다르게"기능이이 URL을 저장하고 로그인으로 리디렉션합니다. 그것은 다시 기본 기능마다 가을 있도록로그인으로 리디렉션 할 때 각도 ui 경로의 루프 문제

$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; 
}); 

파이어 폭스에있는이 잘 작동하지만, 크롬에서 '로그인'상태는 루프의 원인이 해결되지 않습니다.

당신은 누군가가 해결책 좀 도와 수

http://plnkr.co/edit/l51Wqn0EB1ySDjbScSvY에서이 문제를 볼 수 있습니까?

EDIT :이 응용 프로그램은/portal에로드되고/#/login으로 리디렉션되어야하기 때문에 $ window.location.href를 사용하여 리디렉션을 수행해야합니다. 이 $window.location를 사용 할 필요가있다, 그러나 당신은 현재 위치를 저장 한 다음 상태 중 하나에 직접하려고하는 경우 $state을 주입하고 $state.go(...)

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

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

    //save attempted url 


    //redirect to login, 
    var $state=$injector.get('$state'); 
    $state.go('login'); 
}); 

업데이트 사용할 수 있는지

답변

0

앱이 처음로드 될 때 URL의 경로 (예 : #/login)로 이동하기 전에 앱이 "" 경로에 도달했습니다. $window.location을 할 때마다 앱에 다시로드하도록 알립니다. 각각의 다시로드 할 때 ""에 대한 상태 맵핑을 찾아서 그것을 찾을 수 없으므로 그렇지 않으면 루핑됩니다. 당신이 빈 경로를 처리 할 수 ​​

는 "때"

.when('', '/login') 

또한 경우 로그인을 다시 사용자를 걷어차는 홈 페이지에 대한 논리를 할 것이다 가정, 홈 페이지에 기본 수 있습니다 그들은 로그인하지 않았습니다.

+0

고마워요!. 리다이렉트를 위해 $ window.location을 사용해서는 안되며, 다른 답변은이 문제에 대한 좋은 습관이지만, 제 경우에는이 대답이 효과가 있습니다. –

+0

그래, 최선의 방법으로 다른 대답을 남겨 뒀어. – TheSharpieOne

관련 문제