UI-STATE上的用户角色

时间:2016-11-22 10:10:44

标签: angularjs

在我的应用程序中,我有许多不同的用户角色。 在一个州,我需要设置不同的角色。 Bellow代码,只有一个用户角色,工作正常

.state('distributor-dashboard', {
                url: '/distributor-dashboard',
                templateUrl: 'assets/html_templates/distributor-dashboard/distributor-dashboard.html',
                controller: 'distributorDashboardCtrl',
                authentication: {role: admin}
            })

但是,如果我尝试添加其他角色,他们就不会这样做。这里的工作就是例子

.state('distributor-dashboard', {
                url: '/distributor-dashboard',
                templateUrl: 'assets/html_templates/distributor-dashboard/distributor-dashboard.html',
                controller: 'distributorDashboardCtrl',
                authentication: {role: ["admin" || "user"]}
            })

这是我检查USER ROLE

的地方
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {


    $rootScope.previousState = fromState.name;
    var auth = authService.authentication.isAuth;
     if (toState.name !== "login" && toState.name !== "signup" && toState.name !== "resset-password" && toState.name !== "new-password"  && toState.name !== "account-activation" && auth === false) {
        event.preventDefault();
        $state.go('login',  {});
    } 

    var role = authService.authentication.role;

    if (toState.authentication !== undefined && toState.authentication.role !== role)  {
       event.preventDefault();
        $state.go('login', {});
    }


}

日Thnx。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。有必要在身份验证状态下设置我们想要使用的任何角色。

authentication: {roles: ["admin", "user"]}

然后检查滚动中是否存在滚动

var userRole = authService.authentication.role;

    if (toState.authentication !== undefined && toState.authentication.roles.indexOf(userRole) < 0)  {
       event.preventDefault();
        $state.go('login', {});
    }

我使用indexOf进行检查,是数组中的角色。如果有人有任何疑问,请随时提出