有人可以帮助我,我可以解决这个问题
我想限制用户访问他们必须访问的页面。 我唯一知道的是我在$ state中使用resolve来做到这一点 但我无法将用户重定向到401页面,例如,如果他们访问受限制的页面..
这是我的$ state config
.state('app.libraries.class', {
url: '/class',
data: { pageTitle: 'Class Library' },
templateUrl: 'views/libraries/class.html',
resolve: {
access: ['$q','AccessService', function($q,AccessService){
var currentUser = AccessService.currentUser();
if(currentUser.hasAccess === "false"){
return $q.reject('unauthorized!');
}
}]
}
})
.state('app.libraries.account', {
url: '/account',
data: { pageTitle: 'Account Library' },
templateUrl: 'views/libraries/account.html',
resolve: {
access: ['$q','AccessService', function($q,AccessService){
var currentUser = AccessService.currentUser();
if(currentUser.hasAccess === "false"){
return $q.reject('unauthorized!');
}
}]
}
})
这是我的$ stateChangeError
$rootScope.$on('$stateChangeError', function(event, toState, toParams,
fromState, fromParams, error) {
event.preventDefault();
$state.go('app.dashboard.index');
});
应该是什么问题?我刚刚收到此错误
转换拒绝($ id:0类型:6,消息:转换错误, 细节:未经授权!)
答案 0 :(得分:0)
由于你使用的是ui-router 1.0.3,我猜你的问题是不再触发stateChange事件。
在他们的文档中:
注意:状态更改事件已弃用,已禁用并已从版本1.0的Transition Hooks替换
现在您应该使用Transition Hooks,请查看以下链接:https://ui-router.github.io/guide/ng1/migrate-to-1_0#state-change-events
您可以使用以下内容替换$rootScope.$on('$stateChangeError, ...
:
app.run(function($transitions,$state) {
$transitions.onError({ }, function(trans) {
$state.go('app.dashboard.index');
});
})
另请看一下:https://ui-router.github.io/ng2/docs/latest/classes/transition.transition-1.html#onerror
它可以帮到你