アクセス許可/アクセス制御をAngularアプリケーションに追加する方法を決定する際に多くの問題が発生しています。今、私たちはこれを持っています:角度UIルーターのアクセス許可/アクセス制御
app.config(['$stateProvider', function ($stateProvider) {
$stateProvider
.state('default', {
url: '',
templateUrl: 'pages/home/view/home.html',
controller: 'HomeCtrl'
})
.state('home', {
url: '/home',
templateUrl: 'pages/home/view/home.html',
controller: 'HomeCtrl',
permissions: { // ?
only: ['Admin','Moderator']
},
access: { // ?
roles: ['*']
},
resolve: { // ?
authenticate: function($state, $q, $timeout){
},
}
})
}]);
各ページへのアクセス制御を作成するためにどの方法を使用するかを決定することができません。
今、ユーザログイン角度値に格納されている:
app.value('USER', JSON.parse('{{{user}}}'));
USERの値は、ユーザが有する役割/アクセス許可に関する情報を含んでいます。
私はUSERをapp.config()
コールバックに挿入することはできません。「不明なプロバイダ」と表示されます。
USERパラメータに基づいてアクセス制御を行うにはどうすればよいですか。それはあなたがそのようなあなたのルーティング持っている場合たとえば、イベント$ stateChangeStart
であなたのアクセス制御を追加することで実行する
'app.value()'は設定ブロックに挿入できません。 :https://gist.github.com/demisx/9605099#value。 –
の代わりに 'app.constant()'を使用してください。これは知っておいて嬉しいですが、この場合はresolve.authenticateを使用して何かを注入できるので、その解決策は必要ありません。 –
UI-Router 1.0にアップデートできる場合は、これを達成するための最善の方法は、Transition Hookです。 –