1
最後に、さまざまなユーザーを自分の役割別にアプリの別の領域に誘導しようとするとCanActivateを取得しました。しかし、間違ったルートに行くと、リダイレクトすることができません。ここに私が持っているものは次のとおりです:PromiseをCanActivateする<boolean>拒否した後にnavigatebyurlしない
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Promise<boolean> {
return new Promise((resolve, reject) => {
this.af.auth.subscribe(user => {
if (user) {
let userProfile = firebase.database().ref(`/users/${user.uid}`);
userProfile.once("value", (snapshot) => {
let userInfo = snapshot.val().role;
if (userInfo === "GroupA") {
resolve(true);
} else {
reject(this.router.navigate(['/login']));
}
});
} else {
reject(this.router.navigate(['/login']));
}
});
});
}
なぜrouter.navigateしませんか?これを行うためのより良いアイデアについて聞いて100%オープン。
間違ったルートとは何を意味していますか?定義されていないルートを意味します。彼が間違ったルートに行くとredirecにあなたのルーティングファイルのワイルドカード**を使用することができます –
両方のルートが定義されています。/GroupAと/ GroupBはどちらのユーザールートにもアクセスできません。したがって**は両方を有効なルートとして認識します。 – dhndeveloper