Angular Guard重定向到根

时间:2018-09-29 02:07:25

标签: angular

我创建了一个防护程序,以进行身份​​验证,并使用canActivate激活了该防护程序。但是,当我转到将要进行身份验证的路由时,很快,我将重定向到根URL,然后将其转到所需的URL。 我不想让用户看不到预期的页面,所以我的问题是,有没有办法防止它转到该根URL?

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
  this.router.navigate(['/painel/login']);
  return true;
}

1 个答案:

答案 0 :(得分:0)

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
  this.router.navigate(['/painel/login']);
  return true;
}

您的警卫实施不正确。它必须

  • 如果允许用户导航到受保护的路线,则返回true,或者是true的承诺,或者是观察到的发出true的
  • 如果不允许用户导航到受保护的路线,则返回false或false的承诺,或观察到的错误值。

在第二种情况下,由于您还希望显示登录页面(而不仅仅是阻止受保护的路由被激活),因此您可以导航到登录路由。

但是您的警卫总是告诉路由器允许用户进入受保护的路由(因此,路由器允许导航),并且还告诉其导航至登录页面(因此,它转到登录页面)。

所以你的守卫应该看起来像

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
  if (!this.isAuthenticated()) {
      this.router.navigate(['/painel/login']);
      return false;
  }
  return true;
}