- 检查用户是否可以访问某一个路由
- CanActivate 为接口,路由守卫类要实现该接口,该接口规定类中需要有 canActivate 方法,方法决定是否允许访问目标路由
- 路由可以应用多个守卫,所有守卫方法都允许,路由才被允许访问,有一个守卫方法不允许,则路由不允许被访问
- 创建路由守卫:ng g guard guards/auth ```typescript import { Injectable } from ‘@angular/core’; import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from ‘@angular/router’; import { Observable } from ‘rxjs’;
@Injectable({ providedIn: ‘root’ })
export class AuthGuard implements CanActivate { // 注入路由实例 constructor(private router: Router) { }
canActivate(// 待激活路由快照route: ActivatedRouteSnapshot,// 路由快照状态state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {// 用于实现跳转return this.router.createUrlTree(["/home"])// 禁止访问目标路由// return false// 允许访问目标路由// return true}
}
```typescript// src/app/app-routing.module.ts{path: "about/:name",component: AboutComponent,canActivate: [AuthGuard]},
