ログインしていない場合は、到達しようとしているコンポーネントのいずれかに進む前に、ユーザーが適切にログインしていることを確認します。
私の考えは、ルートルーターの$routerOnActivate
でチェックを行うことです。サブルートの問題をどのように解決するか
しかし、何かをログに記録しようとすると、何も起こっていないようです。例:
angular
.module('app')
.config(function($locationProvider) {
$locationProvider.html5Mode(true);
})
.value('$routerRootComponent', 'app')
.component('app', {
templateUrl:'landing.html',
controller: MainController,
$routeConfig: [
{ path: '/', name: 'Dashboard', component: 'dashboard', useAsDefault: true },
{ path: '/media', name: 'Media', component: 'media'}
...
]
});
function MainController(){
this.$routerOnActivate = function(next, previous){
console.log('activated', next, previous);
};
}
同じコード私はrouteConfigに指定されているコンポーネントのいずれかにそれを置く場合this.$routerOnActivate
作品。しかし、明らかに私はすべてのコンポーネントで同じチェックをしたくないのですが、むしろそれを一度グローバルに解決しています。
1.5のアプローチは何ですか?私のコメントから
についてのあなたのチェックを実行する何ページの読み込み?これはangular.runで完全に動作します。セッションの有効期限を処理したい場合は、すべてのリクエストにインターセプタを追加して、401を監視することができます。 – Walfrat
ええ、あなたは完全に正しいと思います。ランブロックはおそらくこれを置くのに最適な場所になります。回答を投稿する場合は、正しいとマークしてください。 –
何ですか? $ routerOnActivateはAngular.runの "完璧な動作"はどうですか?コンポーネントライフサイクルメソッドです。 – mikkelrd