0
使用角度權限庫。我在跑定義的權限的一些():AngularJS授權,在角度權限之前解決承諾,檢查權限
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;
}]
}
})
它可以工作,但是當我試圖使用$轉換我收到「未知的提供者:$ transitionsProvider」 我也找到這個: https://github.com/angular-ui/ui-router/issues/2891 但我認爲必須有辦法做onBefore過渡莫名其妙。 –
$ transitions需要ui-router1.0.0 –
我假設你使用的是新版本的ui.router。對於舊版本,您可以執行如下操作:$ rootScope。$ on('$ stateChangeStart',(ev,toState,toStateParams)=> authService.authorize(ev,toState,toStateParams)); – fernando