Angularjs ui route:在加载视图之前检查权限

时间:2016-11-16 07:25:17

标签: angularjs angular-ui-router

现在我想在angularjs中加载ui-view之前检查用户的权限。 我的route.js是这样的:

$stateProvider.state('app.test', {
      url: '/test',
      component: 'test',
      resolve: {
        delay: function ($q, $http, $window, $state, $timeout) {
          var delay = $q.defer();
          var token = $window.localStorage.getItem('token');
          $http({
            url: "url get profile here", 
            method: "GET",
            headers: {
             'Authorization': token
            }
          })
          .success( function(response) {
          })
          .error( function(response) {
            $state.go('logout');
          });
          delay.resolve();
          return delay.promise;
        }
      }
    })

在模板html中:

<ui-view name="header"></ui-view>
<ui-view name="sidebar"></ui-view>

问题是:当我编辑本地存储时变得不正确$state.go('logout');正在运行。但是在ui-view模板中已经将函数调用到名为headersidebar的控制器中。如何在检查权限完成之前阻止来自ui-view的访问控制器?

1 个答案:

答案 0 :(得分:0)

这是错误,因为我不完全按delay.resolve();。我的代码将成为:

.success( function(response) {
          delay.resolve();
})
.error( function(response) {
          delay.reject();
          $state.go('logout');
 });

它正在工作!!!