登录后无法停留在当前页面

时间:2017-02-15 05:40:33

标签: angular-ui-router

我使用$ 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);

});

我只想留在当前页面。帮助我!

2 个答案:

答案 0 :(得分:1)

希望你做得好

您还必须指定用户是否未经过身份验证,然后指定用户重定向的位置

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

看起来像这样。

希望这能帮助你。

答案 1 :(得分: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');



});

我只是想知道这是一种正确的方法。