我有一个有角度的应用程序。每条路线都有一个必需的用户myApp.config(['$compileProvider', function ($compileProvider) {
$compileProvider.debugInfoEnabled(false);
}]);
值。该字段是必填字段。
group
或者,对于应该向所有人公开的通用页面:
.state('dogQuery', {
url:'/dog',
templateUrl: templatePath + '_DogQuery.html',
controller: 'DogQueryCtrl',
controllerAs: 'vm',
requireADLogin: true,
group: 'Admin'
})
到目前为止,这是我对如何实际执行这些群组的最佳猜测:
.state('403', {
url: '/403',
templateUrl: templatePath + '_403.html',
controller: 'DashboardCtrl',
controllerAs: 'vm',
group: 'None'
});
在检查用户的组时,正在执行的想法暂停每个请求。如果他们在正确的群组中,请通过$rootScope.$on(
'$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
event.preventDefault();
if(toState.group === 'Admin') {
user.isAdmin().then(function (response) {
if (response === true) {
$urlRouter.sync();
}
else {
$state.go("403")
}
});
}
else if(toState.group === 'None'){
$urlRouter.sync();
}
else {
$state.go("403");
}
}
);
将他们带到他们想去的地方。如果用户在右侧组中不,请通过$urlRouter.sync()
将其转到403页。
不幸的是,写入的代码导致循环。如果用户不是管理员,则会通过$state.go()
将其发送到403路由。 403页面触发相同的组检查,但由于它的组要求为“无”,因此触发$state.go()
。此时,我假设将把我们带到403,但不,$urlRouter.sync()
加载旧的$urlRouter.sync()
路由,再次触发403重新路由,并且我陷入了循环。 / p>
要重新说明,有没有办法让/dog
更新为$urlRouter.sync()
设置当前页面的内容?在这种情况下,我应该使用$state.go()
以外的其他内容吗?
谢谢!