Angular AuthGuard的重定向问题

时间:2018-10-31 10:58:48

标签: angular auth-guard

如果用户访问我的网站的基本URL时已经在平台上登录(我使用cookie进行检查),我将尝试将其重定向到特定路由。 预期的行为是这样:

  • 用户转到www.example.com
  • 如果他已经登录,请重定向到www.example.com/my-account
  • 否则,请转到www.example.com

我尝试通过以下代码使用CanActivate:

canActivate() {
this.authService.checkStatus()
.subscribe(
  resp => {
   this.allowed = resp['isValid'];
  },
  error => {
    this.allowed = false;
  }
);

if(this.allowed) {
  this.router.navigate(['/my-account']);
  return true;
}
 return false;
}

问题在于,如果用户未登录,由于该组件不会加载,它将显示白页。

关于如何实现此目标的任何想法?

谢谢。

1 个答案:

答案 0 :(得分:0)

这不只是建议的答案

基本上,它基于您应用的范围。如果您的应用范围较小,则只需在应用启动时加载所有数据即可。如果范围很大,则进行延迟加载。

问题是您已加载了用户首先使用的所有组件的基本信息。

E.x:<ItemsControl ItemsSource="{Binding CellRange}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Orientation="Horizontal"/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <usercontrol:CellButton Number="{Binding}" /> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>