私はAng4 Web Project 2で作業しています。ユーザーが管理セクションに入る前に、そのユーザーが承認されているかどうか確認したいと思います。 私はそのように、角度のルーティングにリゾルバを設定しようとした:resolver with angular4 in ASP.NET Web Api 2
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.profile.getProfile()
.map(result => { setAuthorized(); return result;})
.catch(res => { return Observable.of(new Profile()); });
}
setAuthorized
()は関数のisAuthorized(で確認できるように機能がグローバル変数に権限を設定します) および認可ガード:
if (this.route.firstChild != null) {
return this.route.firstChild.data.map(res => {
if (isAuthorized()) {
return true;
}
});
} else {
return Observable.of(false);
}
ルーティングは次のとおりです。
const routes: Routes =
[
{path: ':lang', component: LanguageComponent,
children: [
{ path: 'dashboard', component: DashboardComponent, resolve: { authority: AuthorityResolverService} },
{ path: 'admin', component: AdminComponent, canActivate: [AuthorizedGuard], resolve: { authority: AuthorityResolverService}},
]}
];
すべてが正常に動作しているようです。しかし問題は、F5をクリックするか、URLをコピーして新しいウィンドウで開くときに、エラーページに常にリダイレクトされることです。私は、ワークフローを監視するとき、それは私が直接URLに到達しようとしていたときに、それはリゾルバを呼び出していないことを示しています
はlocalhost/adminに
私はすべてのエラーを受信していないが、私は常にリダイレクトされます。 すべてのアイデア?
大丈夫です。私はリゾルバを削除し、Gaurdの中にコードをコピーしてObservable of booleanを返しました。私はGuardの認証もしました。素晴らしいです、ありがとう! –