Javascript 根据用户角色显示内容

Javascript 根据用户角色显示内容,javascript,angularjs,Javascript,Angularjs,我有一个菜单,其中的部分仅对某些用户可见。我的数据库中有角色user、角色admin1和角色admin2。 例如,如何使类别2仅对角色\u ADMIN1可见 知道我的用户可以有多个角色,或者一次拥有所有角色。正如您在下面看到的,每个用户都有ROLE\u user ROLE,但唯一的区别是ROLE\u user只能是ROLE\u user、ROLE\u ADMIN1或ROLE\u ADMIN2,或者同时是ROLE\u user和ROLE\u ADMIN2 { "name": "J

我有一个菜单,其中的部分仅对某些用户可见。我的数据库中有角色user、角色admin1和角色admin2。 例如,如何使类别2仅对角色\u ADMIN1可见

知道我的用户可以有多个角色,或者一次拥有所有角色。正如您在下面看到的,每个用户都有ROLE\u user ROLE,但唯一的区别是ROLE\u user只能是ROLE\u user、ROLE\u ADMIN1或ROLE\u ADMIN2,或者同时是ROLE\u user和ROLE\u ADMIN2

{
         "name": "Jack",
         "fname": "Daniel",
         "roles": [
           "ROLE_USER"
         ]
       }


       {
         "name": "Laly",
         "fname": "Dom",
         "roles": [
           "ROLE_USER",
           "ROLE_ADMIN1"
         ]
       }


       {
         "name": "Admini",
         "fname": "Strator",
         "roles": [
           "ROLE_USER",
           "ROLE_ADMIN2"
         ]
       }<br><br>            {
         "name": "Admini",
         "fname": "Strator",
         "roles": [
           "ROLE_USER",
           "ROLE_ADMIN1",               
           "ROLE_ADMIN2" 
           ]
       }

谢谢大家!

首先,我认为在后端级别处理此逻辑的最佳实践

因此,你发送令牌,后端人员必须检查来自

自行标记并根据您拥有的权限返回数据

还要确保您的数据安全

如果你不关心上面提到的问题,你可以这样做,在客户端过滤你的数据

  $scope.adminData = []; 
  $scope.data = [{data:'some user data',roll:'user'},{data:'some admin data',roll:'admin'}]
        data.filter(function(currentValue, index, arr){
        if(currentValue.roll == "admin"){
        $scope.adminData.push(currentValue);
        }
        })
在此之后,如果登录用户具有管理员权限,请在视图中重复adminData数组

在这种情况下,我更喜欢在组件内部执行逻辑,这就是will


为您提供更好的维护和更清晰的视图。

json从何而来?我将从后端返回可用的菜单项,并使用angular的等效项进行循环绑定。“IsGroupShowed”是什么?我看不出有这样的功能。
.controller('menuCtrl', function($scope, $state, $http, $ionicHistory, AppService) {
            $scope.group = [];
            $scope.toggleGroup = function(group) {
              if ($scope.isGroupShown(group)) {
                $scope.shownGroup = null;
              } else {
                $scope.shownGroup = group;
              }
            };
            $scope.isGroupShown = function(group) {
              return $scope.shownGroup === group;
            };

      })
  $scope.adminData = []; 
  $scope.data = [{data:'some user data',roll:'user'},{data:'some admin data',roll:'admin'}]
        data.filter(function(currentValue, index, arr){
        if(currentValue.roll == "admin"){
        $scope.adminData.push(currentValue);
        }
        })