2017-02-15 6 views
1

Я использую $ stateChangeStart вместо routechangestart, проблема, с которой я сталкиваюсь, заключается в том, что после входа в систему, когда я обновляю страницу, я перенаправляюсь на домашнюю страницу, вот мой код?после входа в систему не смог остаться на текущей странице

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



}); 

я просто хочу знать, это правильный путь.