在我的应用程序中,我有许多不同的用户角色。 在一个州,我需要设置不同的角色。 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。
答案 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进行检查,是数组中的角色。如果有人有任何疑问,请随时提出