我在警卫路由方面遇到了一些奇怪的问题。情况如下:页面 A 上有一个守卫,守卫检查它是否拥有可以访问该页面的所有内容。如果不是,它将重定向到页面 B 以获取例如选择客户端所需的一切。当该用户在没有正确信息的情况下导航回页面 A 时,它会被重定向回页面 B。这就是一切出错的地方,因为不允许用户转到页面 AI 从守卫返回 false 并进行重定向。但是我的商店说路线是页面 A,但是因为我拒绝导航,所以我仍然在页面 B 上。
这种情况在代码中如下所示:
警卫
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): boolean {
if (got_what_i_need) {
return true;
} else {
this.store.dispatch(new RouterActions.Go({
path: ['pageB']
}
return false;
}
路线
const appRoutes: Routes = [
{ path: RoutePaths.pageA, loadChildren: './pageA', canActivate: [PortalDetectionGuard] },
{ path: RoutePaths.PageB, loadChildren: './pageB'},
有人知道我在这里做错了什么吗?此外,每当我返回 false 时,当前页面也不会被破坏或重新初始化。
提前致谢!