通过检查当前用户是否具有特定角色

时间:2016-05-13 17:51:03

标签: angularjs node.js mongoose mean-stack satellizer

我已经实施了卫星(https://github.com/sahat/satellizer)作为我的身份验证。我想要的是(https://github.com/fnakstad/angular-client-side-auth)访问级别和角色权限的方法,基于此:

我在服务器端的userSchema中添加了一个角色字段。我如何实现这样的系统来检查经过身份验证的用户具有哪个角色,然后使用它来显示/保护app.js的stateprovider中的某些路由? 我已经尝试实施这一段时间而没有任何进展。

编辑: 检查链接@paul链接后,这是我到目前为止所做的。

.state('admin', {
      url: '/admin',
      template: 'Scripts/App/partials/admin.html',
      controller: 'AdminCtrl',
      resolve: {
          security: ['$q', function ($q) {
              if(!isAdmin()) {
                  return $q.reject('Not Authorized');
              }
          }]
      }
  })

function isAdmin($http, $scope) {
    $http.get('http://localhost:3000/api/isadmin')
        .success(function (response) {
            $scope.role = response.data.role;
            console.log($scope.role);
        });
    if ($scope.role == 'admin') {
        console.log($scope.role);
        return true;
    }
    else {
        return false;
    }
}

App.run(['$rootScope', function ($rootScope) {
    $rootScope.$on('$stateChangeError', function (e, toState, toParams, fromState, fromParams, error) {
    if (error === "Not Authorized") {
        $state.go("notAuthorizedPage");
    }
  });
}]);

这些都在app.js中,这就是我被困的地方。我做错了什么?

0 个答案:

没有答案