2017-02-15 11 views
1

私はroutechangestartの代わりに$ stateChangeStartを使用しています。問題は私が直面しているのは、ログイン後に私がページをリフレッシュするときにホームページにリダイレクトされるときです。ログイン後、現在のページに残りません

$rootScope.$on(‘$stateChangeStart’, function (event,next, toState, toParams,fromState, fromParams, options) { 

if(next.name === “product.login” && $rootScope.authenticated) { 
event.preventDefault(); 
} else if (next.name && next.data.requireLogin && !$rootScope.authenticated)  { 
event.preventDefault(); 
$rootScope.$broadcast(“event:auth-loginRequired”, {}); 
} 
else if (next.name && !AuthSharedService.isAuthorized(next.data.requiredRole)) { 
event.preventDefault(); 
$rootScope.$broadcast(“event:auth-forbidden”, {}); 
} 
} 
); 

$rootScope.$on(‘event:auth-loginConfirmed’, function (next,tostate,toparams, data,event) 
{ 
console.log(‘login confirmed start for ‘ + tostate); 

$rootScope.loadingAccount = false; 

var nextLocation = ($rootScope.$state.current.name? $rootScope.$state.current.name : “frontProduct.productgrid”); 
Session.create(tostate); 
$rootScope.account = Session; 
$rootScope.authenticated = true; 
$state.go(nextLocation); 

}); 

私はちょうど現在のページに滞在したいと思います。

答えて

1

は、ユーザーがこのような

if (!$rootScope.userloggedIn && !$rootScope.authenticate) { 
        $state.go("login"); 
        event.preventDefault(); 
} 
else{ 
    $state.go("home"); 
} 

表情をリ​​ダイレクトする場所をユーザーがその後、認証されない場合も指定する必要がありますあなたがよく

をやって願っています。

これはあなたに役立ちます。答えを見つけ

+0

あなたの返信mayurのおかげでありがとう、しかし、これは私のアプリケーションのユーザーが認証を必要としない任意のページに行くことができますように私を助けていない。 – prabhat

+0

あなたはなぜユーザーが認証されているかどうかチェックしていますか? –

+0

私の問題は、ログイン後にユーザがログイン前にリダイレクトされていることです。私は現在のページでユーザーを保持することができません。ユーザーが認証が必要なページに移動したい場合、ログインページが自動的にポップアップします。私は既にこの条件を使用していました。 – prabhat

0

、私はちょうど知りたい

$rootScope.$on('$stateChangeStart', function (event,next, toState, toParams,fromState, fromParams) { 


    if(next.name === "product.login" && $rootScope.authenticated) { 
     event.preventDefault(); 
    } else if (next.name && next.data.requireLogin && !$rootScope.authenticated) { 
     if(next.name!="product.login"&&next.name!=""){$window.localStorage.setItem('url',next.name);} 
     event.preventDefault(); 
     $rootScope.$broadcast("event:auth-loginRequired", {}); 
    } 
    else if (next.name && !AuthSharedService.isAuthorized(next.data.requiredRole)) { 
     event.preventDefault(); 
     $rootScope.$broadcast("event:auth-forbidden", {}); 
    } 
} 
     ); 


$rootScope.$on('event:auth-loginConfirmed', function (next,tostate,toparams, data,event,$stateProvider) { 
    console.log('login confirmed start for ' + tostate); 


    $rootScope.loadingAccount = false; 

$rootScope.$state.current.name : "frontProduct.productgrid"); 
    Session.create(tostate); 
     $rootScope.account = Session; 
     $rootScope.authenticated = true; 
$state.go($window.localStorage.getItem('url')); 
$window.localStorage.remove('url'); 



}); 

はこれが正しい方法です。

関連する問題