我使用角度权限库。我在run()中定义了一些权限:
PermPermissionStore
.definePermission('isAuthorize', function () {
console.log('isAuthorize', OAuth.isAuthenticated());
return OAuth.isAuthenticated();
});
然后我在我的 routes.js 中检查用户权限
.state('app.main', {
abstract: true,
template: '<ui-view></ui-view>',
data: {
permissions: {
only: ['isAuthorize'],
redirectTo: {
default: 'login'
}
}
}
})
但是我需要在每次刷新页面时首先询问 profileData,并且在我解决承诺后需要运行权限检查。我尝试像这样在父状态上添加解决方案,但它仍然首先要求 app.main 的许可,然后承诺正在解决。
.state('app', {
abstract: true,
template: '<ui-view></ui-view>',
controller: function ($rootScope, userData) {
$rootScope.roles = userData.user.roles;
},
resolve: {
userData: ["ProfileFactory", function (ProfileFactory) {
return ProfileFactory
.get()
.$promise;
}]
}
})