我有一个Angular应用,其中的路由实现了canLoad: [AuthGuard]
,
并且canLoad像这样在我的AuthGuard类中:
canLoad(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):
boolean
{
if (this.authService.isLogged || this.authService.checkLoggedIn())
{
return true;
} else
{
this.router.navigate(['/login']);
return
}
}
如果我尝试在未登录的情况下访问我的任何路由,则由于该路由的组件仍在运行NgOnInit()
而没有任何路由信息的情况下不断出现错误,因此最终我将不带参数地进行API调用。但是,页面始终导航到/login
。
我尚不清楚AuthGuard的工作方式,但是我在canLoad()
函数上设置了断点,并且它们从未触发过。我在这里做错什么了吗?
这是有问题的根路由:
{
path: '',
component: MydocsComponent,
canLoad: [AuthGuard],
children: [...]
}
编辑:我已经意识到这是我的this.authService.checkLoggedIn()
方法的问题-也就是说,它将在AuthGuard检查之前将用户重定向到/login
,所以这是我的问题。感谢您的协助,希望以下答案对使用canLoad
的人有所帮助。
答案 0 :(得分:1)
canLoad
与lazily-loaded
模块一起使用,以防止条件失败时加载块。如果要限制对组件的访问,请使用canActivate
保护。
选中此summary