2017-09-28 18 views
0

我正在angularjs中构建一个基于权限的访问控制应用程序。我希望$ transitions中的参数等于$ routeChangeStart中的'next'参数。

function ($rootScope, $state, $transitions, LoginService) { 
     console.log('------------------in app.js run'); 
     $state.go('login'); 
     $transitions.onStart({}, function ($transitions) { 
       var newToState = $transitions.$to(); 
       if(checkPermissionForView(// param similar to next)) 
     }); 

    } 

我有一个服务定义,如果登录的用户拥有访问视图

checkPermissionForView : function (view) { 
       if (!view.requiresAuthentication) { 
        return true; 
       } 

       return userHasPermissionForView(view); 
      } 

    userHasPermissionForView : function(view){ 
       if(!isLoggedIn()){ 
        return false; 
       } 
      } 

    isLoggedIn : function() { 
       var user = JSON.parse(localStorage.getItem("user")); 
       console.log(user); 
       return user != null; 
      } 

正如你可以看到我想通过“下一个”信息服务许可,检查。 $是否转换。$ to()会在$ routeChangeStart('next')中产生与下一个相同的结果? 我对此很陌生。 TIA

回答

0

是的,使用Transition.to()来获得将被激活的状态。

查看docs for the Transition class了解更多详情。

function ($rootScope, $state, $transitions, LoginService) { 
     console.log('------------------in app.js run'); 
     $state.go('login'); 
     $transitions.onStart({}, function (transition) { 
       var newToState = transition.to(); 
       if(!checkPermissionForView(newToState)) { 
         return $state.target('login'); 
       } 
     }); 
} 

...

checkPermissionForView : function (state) { 
       if (!state.requiresAuthentication) { 
        return true; 
       } 

       return userHasPermissionForState(state); 
      } 

    userHasPermissionForState : function(view){ 
       if(!isLoggedIn()){ 
        return false; 
       } 
      } 

    isLoggedIn : function() { 
       var user = JSON.parse(localStorage.getItem("user")); 
       console.log(user); 
       return user != null; 
      } 

我强烈建议你阅读的Transition Hooks Guide

相关问题