2017-02-15 2 views
1

Ich benutze $ stateChangeStart anstelle von routchangestart, das Problem, das ich konfrontiert ist, dass nach dem Login wann immer ich Seite aktualisieren ich auf Startseite weitergeleitet werden, hier ist mein Code?nach dem Login nicht auf der aktuellen Seite bleiben

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

}); 

Ich möchte nur auf der aktuellen Seite bleiben.helfen Sie mir!

Antwort

1

Hoffnung finden Sie

gut tun Sie müssen auch angeben, wenn der Benutzer dann nicht authentifiziert ist, wo Benutzer

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

sieht wie folgt aus umleiten.

Hoffe, das hilft Ihnen.

+0

danke für Ihre Antwort mayur, aber das hilft mir nicht, da in meiner Anwendung Benutzer zu jeder Seite gehen kann, die Authentifizierung nicht erfordert.so habe ich nicht belästigt, dies zu erwähnen. – prabhat

+0

Warum überprüfen Sie dann, ob der Benutzer authentifiziert ist oder nicht? –

+0

mein Problem ist die Umleitung von Benutzer nach der Anmeldung nicht vor dem Login. Ich bin nicht in der Lage, Benutzer auf der aktuellen Seite zu halten, und wenn Benutzer zu Seite gehen möchte, wo Authentifizierung erforderlich ist meine Login-Seite automatisch Popups Ich hatte bereits diese Bedingung verwendet. – prabhat

0

gefunden Antwort,

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



}); 

Ich möchte nur wissen, ist dies eine richtige Art und Weise.

Verwandte Themen