首页 > 解决方案 > canActivate 总是在 Angular 中登录表单?

问题描述

我是角度的新手。我正在使用 canActivate 守卫,但是当我将其应用于路由时,尽管守卫返回 true,但它总是将我带到登录页面。

请帮忙。

守卫代码:

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';

@Injectable()
export class AuthGuard implements CanActivate {

  constructor(private routes: Router) { }
  canActivate(
    
    alert('blocked');
    return true;
  }
}

路线:

{
    path: 'list',
    component: BatchListComponent, 
    canActivate: [AuthGuard],
  },

标签: angulartypescriptangular-router-guards

解决方案


一个类可以实现的接口,作为决定是否可以激活路由的守卫。如果所有守卫都返回 true,则导航继续。如果任何守卫返回 false,导航将被取消。如果任何守卫返回一个 UrlTree,则当前导航被取消,并且新的导航开始到从守卫返回的 UrlTree。

您的身份验证逻辑不正确,最好在您准备好之前不要立即返回任何内容。否则它将不断失败。

https://angular.io/api/router/CanActivate


推荐阅读