1
终于在尝试将不同用户的角色转移到应用的不同区域时终于获得了CanActivate。但是,如果他们走错了路线,我不能得到这个重定向。这里是我有:CanActivate Promise <boolean>在拒绝后不会导航byurl
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%开放听取更好的想法来做到这一点。
错误的路线是什么意思?意味着没有定义的路线。你可以在你的路由文件中使用野性字符**来重定向,如果他走错了路线 –
这两条路线都已定义。/GroupA和/ GroupB,但任何一个都不能访问任何用户路由。所以,**会将这两个视为有效路线。 – dhndeveloper