簡體   English   中英

Angular Guard重定向到根

[英]Angular Guard redirect to root

我創建了一個防護程序,以進行身份​​驗證,並使用canActivate激活了該防護程序。 但是,當我轉到將要進行身份驗證的路由時,很快,我將重定向到根URL,然后將其轉到所需的URL。 我不希望用戶看不到預期的頁面,所以我的問題是,是否有辦法防止它轉到該根URL?

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

您的衛隊實施不正確。 它必須

  • 如果允許用戶導航到受保護的路線,則返回true或true的承諾,或者可觀察到的發出true
  • 如果不允許用戶導航到受保護的路線,則返回false或false的承諾,或者返回可觀察到的false。

在第二種情況下,由於您還想顯示登錄頁面(而不僅僅是阻止受保護的路由被激活),因此您可以導航到登錄路由。

但是您的警衛總是告訴路由器允許用戶進入受保護的路由(因此,路由器允許導航),並且還告訴路由器導航至登錄頁面(因此,它會轉到登錄頁面) )。

所以你的守衛應該像

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM